当前位置:  开发笔记 > 编程语言 > 正文

正确使用get_or_create的方法?

如何解决《正确使用get_or_create的方法?》经验,为你挑选了4个好方法。

我正在尝试将get_or_create用于表单中的某些字段,但是当我尝试这样做时,我收到500错误.

其中一行看起来像这样:

customer.source = Source.objects.get_or_create(name="Website")

我得到的上述代码的错误是:

Cannot assign "(, False)": "Customer.source" 
   must be a "Source" instance.

Bryan Rehbei.. 319

从文档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")

仅供参考,是布尔值。如果创建则为True,如果获取则为False (2认同)


Tobu.. 31

get_or_create 返回一个元组.

customer.source, created = Source.objects.get_or_create(name="Website")

或者,如果你不关心布尔标志:`customer.source = Source.objects.get_or_create(name ="Website")[0]` (15认同)

@mipadi我更喜欢`customer.source,_ = Source.objects.get_or_create(name =“ Website”)`,因为这使得返回元组的事实更加明显,从而有助于避免将来的错误。 (2认同)


Tushar.PUCSD.. 13

get_or_create()返回一个元组,

customer.source, created  = Source.objects.get_or_create(name="Website")

这里创建的 =>有一个布尔值,是否创建

customer.source =>有一个get_or_create()方法的对象.

以下是文档的链接:http://docs.djangoproject.com/en/dev/ref/models/querysets/#get-or-create-kwargs



1> Bryan Rehbei..:

从文档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")


仅供参考,是布尔值。如果创建则为True,如果获取则为False

2> Tobu..:

get_or_create 返回一个元组.

customer.source, created = Source.objects.get_or_create(name="Website")


或者,如果你不关心布尔标志:`customer.source = Source.objects.get_or_create(name ="Website")[0]`
@mipadi我更喜欢`customer.source,_ = Source.objects.get_or_create(name =“ Website”)`,因为这使得返回元组的事实更加明显,从而有助于避免将来的错误。

3> Tushar.PUCSD..:

get_or_create()返回一个元组,

customer.source, created  = Source.objects.get_or_create(name="Website")

这里创建的 =>有一个布尔值,是否创建

customer.source =>有一个get_or_create()方法的对象.

以下是文档的链接:http://docs.djangoproject.com/en/dev/ref/models/querysets/#get-or-create-kwargs



4> 小智..:

关注@Tobu回答和@mipadi评论,以更加pythonic的方式,如果对创建的标志不感兴趣,我会使用:

customer.source, _ = Source.objects.get_or_create(name="Website")

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有