Ich habe zwei Modelle wie folgt:Massenaktualisierung für viele zu viele Felder
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
Nun, was ich suche ist eine Author
auf mehrere Book
Objekte zu tun hinzufügen, ohne über die Liste von Buchobjekten iterieren.
Djangos Update-Methode unterstützt ManyToManyField
nicht gemäß docs. Es heißt
Sie können nur Non-Relation-Felder und ForeignKey-Felder mit dieser Methode festlegen. Um ein nicht relationales Feld zu aktualisieren, geben Sie den neuen Wert als Konstante an. Um ForeignKey-Felder zu aktualisieren, legen Sie den neuen Wert als neue Modellinstanz fest, auf die Sie verweisen möchten.
so mache ich derzeit das Folgende, das sehr ineffizient ist, da ich die Datenbank für jedes Buchobjekt schlagen werde.
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()
Ich bin ziemlich sicher, dass es eine Möglichkeit, dies zu umgehen ist, aber ich bin einfach nicht in der Lage es in der Dokumentation zu finden. Jede Hilfe wäre willkommen. Dank
https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/ Überprüfen Sie dies ..... Hinzufügen über das 'andere' Ende eines m2m Abschnittes .... – boltsfrombluesky
möglich duplizieren von [Wie man ein Objekt für ein Django-Modell mit einem vielen zu vielen Feld erstellt?] (http://stackoverflow.com/questions/6996176/how-to-create-an-object-for-a-django-model- with-a-many-to-many-field) – Pureferret