[django] 존재하지 않는 경우 생성

웹 API에서 데이터를 읽고 데이터베이스에 저장하는 Django 애플리케이션이 있습니다.
모드에서 새 객체를 생성하지만 객체가 이미 존재하는 경우 중복 예외를 방지하는 방법이 있습니까?

즉, 객체를 저장하는 방법이 있지만 이미 존재하는 경우 아무 작업도하지 않는 것입니까?



답변


답변

Django 1.7에서는 다음을 수행 할 수도 있습니다.

Model.objects.update_or_create()


답변

최신 버전의 Django에서 save () 함수는 기본적으로 UPDATE 또는 INSERT를 수행하는 것처럼 보입니다. 를 참조하십시오 여기 .


답변

다음을 사용하여 달성 할 수 있습니다. Model.objects.get_or_create()

obj, created = Person.objects.get_or_create(
    first_name='John',
    last_name='Lennon',
    defaults={'birthday': date(1940, 10, 9)},
)

get_or_create ()에 전달 된 모든 키워드 인수 (여기서는 first_namelast_name )는 선택 사항 인 defaults를 제외하고는 데이터베이스의 데이터베이스 (객체 찾기)를 쿼리하는 데 사용됩니다.

튜플을 반환하고 객체가 발견되면 get_or_create ()는 해당 객체의 튜플을 반환하고 False를 반환합니다.

참고 : try except명령문 을 사용하여 동일한 작업을 수행 할 수도 있습니다 .
예 :

try:
    obj = Person.objects.get(first_name='John', last_name='Lennon')
except Person.DoesNotExist:
    obj = Person(first_name='John', last_name='Lennon', birthday=date(1940, 10, 9))
    obj.save()


답변