我正在尝试将get_or_create用于表单中的某些字段,但是当我尝试这样做时,我收到500错误.
其中一行看起来像这样:
customer.source = Source.objects.get_or_create(name="Website")
Run Code Online (Sandbox Code Playgroud)
我得到的上述代码的错误是:
Cannot assign "(<Source: Website>, False)": "Customer.source"
must be a "Source" instance.
Run Code Online (Sandbox Code Playgroud)
Bry*_*ein 319
从文档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
Run Code Online (Sandbox Code Playgroud)
说明:
要评估相似性的字段必须在外部提及defaults.其他领域必须包括在内defaults.如果发生CREATE事件,则考虑所有字段.
看起来你需要返回一个元组,而不是单个变量,这样做:
customer.source,created = Source.objects.get_or_create(name="Website")
Run Code Online (Sandbox Code Playgroud)
Tob*_*obu 31
get_or_create 返回一个元组.
customer.source, created = Source.objects.get_or_create(name="Website")
Run Code Online (Sandbox Code Playgroud)
Tus*_*CSD 13
get_or_create()返回一个元组,
customer.source, created = Source.objects.get_or_create(name="Website")
Run Code Online (Sandbox Code Playgroud)
这里创建的 =>有一个布尔值,是否创建
customer.source =>有一个get_or_create()方法的对象.
以下是文档的链接:http://docs.djangoproject.com/en/dev/ref/models/querysets/#get-or-create-kwargs
jbo*_*dia 11
关注@Tobu回答和@mipadi评论,以更加pythonic的方式,如果对创建的标志不感兴趣,我会使用:
customer.source, _ = Source.objects.get_or_create(name="Website")
Run Code Online (Sandbox Code Playgroud)
小智 6
您遇到的问题是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
| 归档时间: |
|
| 查看次数: |
190747 次 |
| 最近记录: |