Вот пример:
Если у меня есть эти классы
class Author(models.Model):
name = models.CharField(max_length=45)
class Book(models.Model):
name = models.CharField(max_length=45)
authors = models.ManyToManyField(Author)
В базе данных у меня есть один автор с именем "Джордж" и еще один с именем "Georfe". Последняя ошибка. Итак, я хочу, чтобы в каждой книге, в которой "Геофен", как один из его авторов, заменил ее автор "Джордж".
В SQL действительно легко сделать. Если id "George" = 3 и id "Georfe" = 7, а имя таблицы отношений - "author_book":
UPDATE author_book SET id=3 WHERE id=7;
Возможно ли это сделать с помощью Django ORM?
Я нашел способ сделать это: я петлю через все связанные книги Ошибочного автора и делаю:
book.authors.add(Author.objects.get(id=3))
book.authors.remove(Author.objects.get(id=7))
Но я не считаю это решение действительно элегантным и эффективным. Есть ли решение без цикла?