私は次のように2つのモデルを持っています:
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 の update メソッドはdocsManyToManyField
に従ってサポートしていません。それは言います:
このメソッドを使用して設定できるのは、非リレーション フィールドと 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()
これを回避する方法があると確信していますが、ドキュメントで見つけることができません。