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
'Programing' 카테고리의 다른 글
크롬은 세션 쿠키를 삭제하지 않습니다 (0) | 2020.05.21 |
---|---|
NTFS 성능 및 대용량 파일 및 디렉토리 (0) | 2020.05.20 |
Pyplot으로 모든 서브 플로트 위에 하나의 메인 타이틀을 설정하는 방법은 무엇입니까? (0) | 2020.05.20 |
Prim과 반대로 Kruskal을 언제 사용해야합니까? (0) | 2020.05.20 |
.NET String을 변경할 수없는 이유는 무엇입니까? (0) | 2020.05.20 |