2011-01-16 2 views
20

장고의 모델에 get_or_create 함수를 사용했습니다. 이 함수는 두 개의 값을 반환합니다. 하나는 객체 자체이고 다른 하나는 기존 객체가 검색되었는지 새 객체가 검색되었는지를 나타내는 부울 플래그입니다.장고의 get_or_create 함수는 어떻게 두 개의 값을 반환합니까?

일반적으로 함수는 단일 값이나 tuple, list 또는 사전과 같은 값의 모음을 반환 할 수 있습니다.

get_or_create과 같은 함수는 어떻게 두 개의 값을 반환합니까?

+4

실제로 튜플을 반환합니다. – shanyu

+1

두 개의 요소가있는 튜플을 반환합니다. 'return (is_exit, object)' – mouad

+0

시도해보십시오. 'a = 1, 2; 인쇄 유형 (a)'. 참으로 튜플입니다. – TryPyPy

답변

29

get_or_create()은 단순히 두 값의 튜플을 반환합니다. 그런 다음 documentation 예에서와 같이, 두 개의 이름으로 두 개의 튜플 항목을 바인딩 sequence unpacking를 사용할 수 있습니다

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

그것은 튜플을 반환합니다. 함수가 이것을 할 수 있음을 알았던 것처럼 들리지만 결과를 직접 두 변수에 할당 할 수는 없습니다.

# Returns a tuple of (object, created), where object is the retrieved 
# or created object and created is a boolean specifying whether a new 
# object was created. 

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

튜플을 사용하여/튜플 풀기은 종종 하나 개 이상의 값을 반환하는 quite "pythonic" way로 간주됩니다

get_or_create에 대한 장고 설명서를 참조하십시오.

관련 문제