Django中的get_or_create函数如何返回两个值?

时间:2011-01-16 16:57:48

标签: python django

我在Django的模型上使用了get_or_create函数。此函数返回两个值。一个是对象本身,另一个是布尔标志,指示是检索现有对象还是创建新对象。

通常,函数可以返回单个值或一组值,如tuplelist或字典。

get_or_create这样的函数如何返回两个值?

3 个答案:

答案 0 :(得分:29)

get_or_create()只返回两个值的元组。然后,您可以使用sequence unpacking将两个元组条目绑定到两个名称,如documentation示例中所示:

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

答案 1 :(得分:4)

它返回一个元组。听起来你知道函数可以做到这一点,而不是你可以直接将结果分配给两个变量!

请参阅get_or_create的Django文档:

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

答案 2 :(得分:3)

使用元组/元组解包通常被视为返回多个值的quite "pythonic" way