Programing

get_or_create를 사용하는 올바른 방법은 무엇입니까?

lottogame 2020. 5. 20. 07:51
반응형

get_or_create를 사용하는 올바른 방법은 무엇입니까?


내 양식의 일부 필드에 get_or_create를 사용하려고하는데 그렇게 할 때 500 오류가 발생합니다.

라인 중 하나는 다음과 같습니다.

customer.source = Source.objects.get_or_create(name="Website")

위 코드에서 발생하는 오류는 다음과 같습니다.

Cannot assign "(<Source: Website>, False)": "Customer.source" 
   must be a "Source" instance.

get_or_create 문서 에서 :

# get_or_create() a person with similar first names.

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

# get_or_create() didn't have to create an object.
>>> created
False

설명 : 유사성을 평가할 필드는 외부에서 언급해야합니다 defaults. 나머지 필드는에 포함되어야 defaults합니다. CREATE 이벤트가 발생하면 모든 필드가 고려됩니다.

단일 변수 대신 튜플로 반환 해야하는 것처럼 보입니다.

customer.source,created = Source.objects.get_or_create(name="Website")

get_or_create 튜플을 반환합니다.

customer.source, created = Source.objects.get_or_create(name="Website")

get_or_create() 튜플을 반환합니다 :

customer.source, created  = Source.objects.get_or_create(name="Website")
  • created 부울 값이 있거나 생성되었는지 여부

  • customer.source get_or_create() 방법 의 대상이 있습니다.


생성 된 플래그에 관심이 없다면 @Tobu 답변과 @mipadi 의견에 따라 더 파이썬적인 방식으로 사용합니다.

customer.source, _ = Source.objects.get_or_create(name="Website")

발생한 문제는의 문서화 된 기능입니다 get_or_create.

"defaults"이외의 키워드 인수를 사용할 때의 반환 값은 get_or_create인스턴스입니다. 그것이 반환 값의 파 렌스를 보여주는 이유입니다.

customer.source = Source.objects.get_or_create(name="Website")[0]올바른 값을 얻는 데 사용할 수 있습니다 .

다음은 설명서 링크입니다 : http://docs.djangoproject.com/en/dev/ref/models/querysets/#get-or-create-kwargs

참고 URL : https://stackoverflow.com/questions/1941212/correct-way-to-use-get-or-create

반응형