正确的使用方式 get_or_create?

我正在努力使用 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.


</source:>
已邀请:

二哥

赞同来自:

来自文件
https://docs.djangoproject.com ... reate
:


# 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

. Rest 应包括在这些字段中
defaults

. 如果事件 CREATE 它发生了,所有字段都将被考虑在内。

似乎你需要返回元组,而不是在一个变量中,这样做:


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

小姐请别说爱

赞同来自:

get_or_create

返回一个motorcade。


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

快网

赞同来自:

https://docs.djangoproject.com ... reate
返回一个管家:


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



created




它具有逻辑值,它是创建的。


customer.source




有一个方法对象
get_or_create//

.

小姐请别说爱

赞同来自:

后 @Tobu 答案I. @mipadi 评论,超过Python方式,如果它没有对创建的标志不感兴趣,我会使用:


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

喜特乐

赞同来自:

您遇到的问题是一个记录的功能。
get_or_create

.

使用以外的关键字参数时 "defaults", 返回值
get_or_create

是一个实例。 这就是为什么它向你展示返回的人。

您可以使用
customer.source = Source.objects.get_or_create/name="Website"/[0]

, 获得正确的价值。

以下是文档的链接:
http://docs.djangoproject.com/ ... wargs

要回复问题请先登录注册