У меня есть две модели:
class Book(models.Model):
title = models.CharField(max_length=100)
year = models.IntegerField(max_lenght=4)
author = models.ManyToManyField(null=true, blank=true)
class Author(models.CustomUser):
# some fields
Теперь я хочу добавить Author
к нескольким Book
объектам без итерации по списку объектов книги.
Метод обновления Django не поддерживает ManyToManyField
в соответствии с docs. В нем говорится:
С помощью этого метода вы можете устанавливать только поля отношения и поля ForeignKey. Чтобы обновить поле без отношения, укажите новое значение как константу. Чтобы обновить поля ForeignKey, установите для нового значения новый экземпляр модели, на который вы хотите указать.
поэтому в настоящее время я делаю следующее, которое очень неэффективно, поскольку я буду бить базу данных для каждого объекта книги.
author = Author.objects.get(pk=1)
books = Book.objects.filter(**kwargs) # say this returns 100 objects
# each loop here will hit the database making it really inefficient
# for long lists.
for book in books:
book.authors.add(author)
book.save()
Я уверен, что есть способ обойти это, но я просто не могу найти его в документах. Любая помощь будет оценена по достоинству. Благодаря