웹 API에서 데이터를 읽고 데이터베이스에 저장하는 Django 애플리케이션이 있습니다.
모드에서 새 객체를 생성하지만 객체가 이미 존재하는 경우 중복 예외를 방지하는 방법이 있습니까?
즉, 객체를 저장하는 방법이 있지만 이미 존재하는 경우 아무 작업도하지 않는 것입니까?
답변
답변
답변
최신 버전의 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_name 및 last_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()