Based on the Django doc, I should be able to pass multiple objects at once to be added to a manytomany relationship but I get a
* TypeError: unhashable type: 'list'
when I try to pass a django queryset casted in a list. Passing a Queryset or a ValuesListQueryset seems to fail also. Is there a better way than use a for loop ?
Use:
object.m2mfield.add(*items)
as described in the documentation:add()
accepts an arbitrary number of arguments, not a list of them.To expand that list into arguments, use
*
Addendum:
Django does not call
obj.save()
for each item but usesbulk_create()
, instead.To add on, If you want to add them from a queryset
Example
From: Insert queryset results into ManytoManyfield
Django 1.9 adds additional ways for adding to a many-to-many relationship.
Documentation: https://docs.djangoproject.com/en/1.9/ref/models/relations/#django.db.models.fields.related.RelatedManager.set
set
is a new nicety: