[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는 다 대다 관계에 추가 할 수있는 추가 방법을 추가합니다.
set
새로운 멋쟁이입니다.
>>> new_list = [obj1, obj2, obj3]
>>> e.related_set.set(new_list)