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

21 投票
3 回答
29736 浏览
提问于 2025-04-16 10:03

我在Django中使用了get_or_create这个函数。这个函数会返回两个值。一个是对象本身,另一个是一个布尔值,用来表示是找到了一个已有的对象,还是新创建了一个对象。

通常来说,一个函数可以返回一个单独的值,或者返回一组值,比如tuple(元组)、list(列表)或者字典。

get_or_create这样的函数是怎么返回两个值的呢?

3 个回答

4

使用元组和元组解包通常被认为是一种非常“Python风格”的方法,可以用来返回多个值。

6

它返回的是一个元组。听起来你知道函数可以这样做,只是不知道你可以把结果直接赋值给两个变量!

可以查看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)})
30

get_or_create() 这个函数简单来说会返回一对值,组成一个元组。你可以使用序列解包的方法,把这个元组里的两个值分别绑定到两个变量上,就像在文档中的例子那样:

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

撰写回答