Ho due modelli come segue:aggiornamento di massa per molti a molti campi
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
Ora, quello che sto cercando di fare è aggiungere un Author
a più Book
oggetti senza l'iterazione sulla lista degli oggetti del libro.
Il metodo di aggiornamento di Django non supporta ManyToManyField
come da docs. Dice
È possibile impostare solo campi non di relazione e campi ForeignKey utilizzando questo metodo. Per aggiornare un campo di non relazione, fornire il nuovo valore come costante. Per aggiornare i campi ForeignKey, impostare il nuovo valore come nuova istanza del modello a cui si desidera puntare.
così attualmente sto facendo quanto segue che è altamente inefficiente in quanto andrò a colpire il database per ogni oggetto libro.
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()
Sono abbastanza sicuro che ci sia un modo per aggirare questo, ma io sono solo in grado di trovare nella documentazione. Qualsiasi aiuto sarebbe apprezzato. Grazie
https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/ controllare questo ..... Aggiunta tramite l'altra estremità di una sezione m2m .... – boltsfrombluesky
possibile duplicato di [Come creare un oggetto per un modello Django con un campo molti a molti?] (http://stackoverflow.com/questions/6996176/how-to-create-an-object-for-a-django-model- with-a-many-to-many-field) – Pureferret