python - 使用 get_or_create 的正确方法?

标签 python django

我正在尝试对表单中的某些字段使用 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/

相关文章:

Python 替换列表中的字符

python - 返回按下的键的名称

python - nng支付nng pub/sub。客户端未收到任何消息

python - Django 是否支持多值 cookie?

python - 如何区分本地文件系统路径和SSH文件系统路径?

python - pyCharm 和 django 管理员

python - Queryset.create() 方法中的 Django, 'self._for_write' 是什么?

python - 在 Django 中强制执行严格的 SQL 模式

python - 为什么当我在 Mac OS X 终端应用程序中键入时不显示标准输入?

python - 在 python 中使用整数参数进行 for 循环