728x90
반응형
Django bulk update는 인자값으로 fields를 주어야한다. 모델의 어떤 필드를 업데이트할 것인지 직접 지정해줘야하는 것이다.
아래 코드에서 some_models =[] 에는 필드값이 업데이트된 Some_Model의 QuerySet 객체가 들어있다고 보면 된다.
Some_Model.objects.bulk_update(
some_models,
batch_size=3000,
fields=["status", "result"],
)
자바-스프링 계열은 JPA가 dirty checking을 알아서 해줬었는데.. 아쉽다 ㅠㅠ
bulk_create, bulk_insert 시 주의할점
- serializer에서 제공하는 validate가 먹히지 않을 수 있기 때문에 def validate_xxx 로 입력값에 대한 검증을 하는 메서드를 직접 오버라이드해야한다.
- 예를 들어 100개 bulk create or update 시에, 하나라도 에러가 나면 전체 롤백을 할 것인지, 아니면 해당 레코드만 빼고 진행할 것인지 결정해야한다.
참조
https://www.delftstack.com/ko/howto/django/django-bulk-update/
728x90
반응형