Назначение внешнего ключа с помощью уникального поля непервичного ключа в одном запросе

#django #django-models #django-orm

Вопрос:

Допустим, у меня есть следующие две модели:

 class User(Model):
    email = models.EmailField(unique=True)


class Post(Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
 

Теперь предположим, что у меня есть адрес электронной почты пользователя, и я хочу указать этого пользователя в качестве автора поста. Я мог бы сделать это вот так:

 post = Post()
# Just get the ID to avoid having to load a whole model
post.author_id = User.objects.values_list('pk', flat=True).get(email=user_email_address)
post.save()
 

Однако это приводит к двум запросам: один для получения пользователя и один для сохранения сообщения. Я хотел бы знать, есть ли способ сделать это в одном запросе.

Я не хочу ничего менять to_field в ForeignKey этом .

Комментарии:

1. Нет, на данный момент это невозможно.