首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >正确使用get_or_create?

正确使用get_or_create?
EN

Stack Overflow用户
提问于 2009-12-22 00:43:54
回答 5查看 257.9K关注 0票数 254

我正尝试在表单中的某些字段中使用get_or_create,但是当我尝试这样做时,我得到了一个500错误。

其中一行看起来像这样:

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

对于上面的代码,我得到的错误是:

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

回答 5

Stack Overflow用户

发布于 2009-12-22 00:47:00

get_or_create返回一个元组。

customer.source, created = Source.objects.get_or_create(name="Website")
票数 37
EN

Stack Overflow用户

发布于 2017-09-26 17:51:18

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

customer.source, _ = Source.objects.get_or_create(name="Website")
票数 16
EN

Stack Overflow用户

发布于 2009-12-22 00:57:10

您遇到的问题是记录在案的get_or_create功能。

当使用"defaults“以外的关键字参数时,get_or_create的返回值是一个实例。这就是为什么它会显示返回值中的括号。

您可以使用customer.source = Source.objects.get_or_create(name="Website")[0]来获取正确的值。

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1941212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档