Как обновить отношения модели Django только с помощью значения внешнего ключа
Я ищу способ обновления отношения на модели в Django, передавая только значение внешнего ключа, а не модель, на которую ссылается отношение.
Я понимаю, что Django хочет, чтобы я сделал это
publisher = Publisher.objects.get(id=2)
book = Book.objects.get(id=1)
book.update(publisher=publisher)
Но я хочу просто обновить издателя, используя publishers PK, так что что-то вроде этого.
book = Book.objects.get(id=1)
book.update(publisher=2)
У меня есть значительный объем данных, которые необходимо обновить, и у меня не обязательно есть ссылка на модель для каждого поля, которое необходимо обновить в "Книге".
Вы можете использовать .filter(…) [Django-doc] здесь и работать с publisher_id:
Book.objects.filter(id=1).update(publisher_id=2)
Это предотвратит первое получение объекта Book с другим запросом, поэтому обычно это выполняется с одним запросом к базе данных.