2012-05-29 2 views
3

나는 개체를 삽입 할 bulk_create를 사용하는 경우 : 오브젝트의django에서 개체 선택/쿼리 bulk_create?

objList = [a, b, c,] #none are saved 
model.objects.bulk_create(objList) 

는 ID의 업데이트되지 않을 것 (https://docs.djangoproject.com/en/dev/ref/models/querysets/#bulk-create 참조). 그래서 나는이 사람들을 외래 키 객체로 사용할 수 없습니다. 대량으로 작성한 후 외래 키 객체로 사용하여 데이터베이스에서 다시 쿼리하는 방법을 생각했지만 ID를 쿼리하지 않았습니다. ID 이외의 열에 중복 값이있을 수 있으므로 데이터베이스에서 이러한 개체를 어떻게 쿼리합니까? 또는 일괄 생성 된 항목을 외래 키로 만드는 더 좋은 방법이 있습니까?

답변

1

예제와 같이 3 개의 개체 만있는 경우 각 개체를 개별적으로 호출하고 트랜잭션 내에서 호출을 래핑하여 원할 필요가있는 경우 필요할 수 있습니다.

bulk_create를 사용하는 이유가 더 많으면 잠재적으로 대신 루프 처리하고 각각에 대해 save를 호출 할 수 있습니다. 다시 말하지만, 필요한 경우 트랜잭션으로 래핑 할 수 있습니다. 비록 삽입 쿼리를 실행하는 것이 일부 데이터베이스 설정에서 문제가 될 수 있기 때문에이 옵션이 마음에 들지 않을 수도 있습니다.

또는 해킹은 개체에 알려진 고유 식별자를 추가하여 저장 후에 다시 쿼리 할 수 ​​있습니다.