使用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.

回答:

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

以上是 使用get_or_create的正确方法? 的全部内容, 来源链接: utcz.com/qa/434429.html

回到顶部