How to add multiple objects to ManyToMany relationship at once in Django ?

Solution 1:

Use: object.m2mfield.add(*items) as described in the documentation:

add() accepts an arbitrary number of arguments, not a list of them.

add(obj1, obj2, obj3, ...)

To expand that list into arguments, use *

add(*[obj1, obj2, obj3])

Addendum:

Django does not call obj.save() for each item but uses bulk_create(), instead.

Solution 2:

To add on, If you want to add them from a queryset

Example

# Returns a queryset
permissions = Permission.objects.all()

# Add the results to the many to many field (notice the *)

group = MyGroup.objects.get(name='test')

group.permissions.add(*permissions)

From: Insert queryset results into ManytoManyfield