Как добавить несколько объектов в отношения ManyToMany сразу в Django?

Основываясь на документе Django, я должен иметь возможность передавать сразу несколько объектов для добавления в manytomany-отношения, но я получаю

* TypeError: unhashable type: 'list'

когда я пытаюсь передать задание django, указанное в списке. Передача Queryset или ValuesListQueryset также терпит неудачу. Есть ли лучший способ, чем использовать цикл for?

Ответ 1

Использование: object.m2mfield.add(*items), как описано в документации:

add() принимает произвольное количество аргументов, а не их список.

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

Чтобы развернуть этот список в аргументы, используйте *

add(*[obj1, obj2, obj3])

Добавление:

Django не вызывает obj.save() для каждого элемента, но вместо этого использует bulk_create().

Ответ 2

Чтобы добавить, Если вы хотите добавить их из набора запросов

Пример

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

# Turns it into a list
permissions = list(permissions)

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

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

group.permissions.add(*permissions)

От: Вставить результаты запроса в ManytoManyfield