django 1.4 Agregar muchos a muchos a granel


Me preguntaba si hay el equivalente de un "agregar todo" o "crear en masa" para muchas a muchas relaciones que reducen el número de consultas (voy a hacer esto para una larga lista)?

Los documentos sobre este tema parecen sugerir que esto no es posible:

Https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many /

**Associate the Article with a Publication:**
a1.publications.add(p1)

**Create another Article, and set it to appear in both Publications:**
a2 = Article(headline='NASA uses Python')
a2.save()
a2.publications.add(p1, p2)
a2.publications.add(p3)
Author: snakesNbronies, 2012-06-01

2 answers

Por supuesto que es posible! Solo tienes que crear una tabla intermedia explícita y a continuación, utilice el método bulk_create de este modelo.

 5
Author: rantanplan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-01 11:39:54

Si desea agregar queryset a bulk add o remove método de muchos a muchos modelos de relación:

qs = Article.objects.all()
publications = Publications.objects.get(id=1)

publications.article_set.add(*qs)
publications.save()
publications.article_set.remove(*qs)
publications.save()
 29
Author: zzart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-06 09:34:44