본문 바로가기
관리자

Programming-[Backend]/Django

[TIL] Django bulk_update 방법과 주의사항

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
반응형