Подтвердить что ты не робот

Как функция get_or_create в Django возвращает два значения?

Я использовал функцию get_or_create для своих моделей в Django. Эта функция возвращает два значения. Один из них - это сам объект, а другой - логический флаг, указывающий, был ли найден существующий объект или новый.

Обычно функция может возвращать одно значение или набор значений, таких как tuple, list или словарь.

Как функция типа get_or_create возвращает два значения?

4b9b3361

Ответ 1

get_or_create() просто возвращает кортеж двух значений. Затем вы можете использовать последовательность распаковки, чтобы привязать две записи кортежа к двум именам, например, в :

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

Ответ 2

Он возвращает кортеж. Похоже, вы знали, что функции могут это сделать, просто не для того, чтобы вы могли напрямую передать результаты двум переменным!

См. документацию Django для get_or_create:

# 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)})