我正在尝试对表单中的某些字段使用 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")
关于python - 使用 get_or_create 的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1941212/