[django] Django에서 ManyToMany 관계에 여러 객체를 한 번에 추가하는 방법은 무엇입니까?

Django 문서를 기반으로 여러 객체를 한 번에 전달하여 많은 관계에 추가 할 수 있어야하지만

* TypeError : 해싱 할 수없는 유형 : ‘list’

목록에 캐스팅 된 장고 쿼리 세트를 전달하려고합니다. Queryset 또는 ValuesListQueryset 전달도 실패한 것으로 보입니다. for 루프를 사용하는 것보다 더 좋은 방법이 있습니까?



답변

사용 : 설명서에object.m2mfield.add(*items) 설명 된대로 :

add() 목록이 아닌 임의의 수의 인수를 허용합니다.

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

해당 목록을 인수로 확장하려면 *

add(*[obj1, obj2, obj3])

추가:

Django는 obj.save()각 항목을 호출하지 않고 bulk_create()대신을 사용 합니다.


답변

추가하려면 쿼리 세트에서 추가하려는 경우

# 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 : ManytoManyfield에 쿼리 셋 결과 삽입


답변

Django 1.9는 다 대다 관계에 추가 할 수있는 추가 방법을 추가합니다.

설명서 : https://docs.djangoproject.com/en/dev/ref/models/relations/#django.db.models.fields.related.RelatedManager.set

set 새로운 멋쟁이입니다.

>>> new_list = [obj1, obj2, obj3]
>>> e.related_set.set(new_list)


답변