繁体   English   中英

get_or_create()问题

[英]get_or_create() question

从官方文档中我无法理解什么是默认参数。

obj, created = Person.objects.get_or_create(first_name='John', last_name='Lennon',
                  defaults={'birthday': date(1940, 10, 9)}

这是否意味着它将查找与JohnLennon参数都匹配的字段,并且将只插入生日? 我可以使用其他东西代替默认值吗?

我应该使用哪种方法来清理表(模型)中的所有字段?

它给我FileField错误无法解析字段中的关键字默认值

所以,如果我找到了,我需要寻找场-更新数据。 如果找不到,则必须创建新字段...但是,由于我了解不足,因此在找到当前字段时不会更新默认字段。

这很明显-如果get_or_create找到查询的对象,则defaults keword不执行任何操作。 但是,如果创建对象,则存储在obj实例的birthday字段(在您的示例中)将填充相应的值。 您可以将任何字典作为defaults传递,只要其键是您要查询的模型的有效字段名称即可。

要清洁整个桌子,您应该使用类似以下的方法:

Model.objects.all().delete()

等效于:

DELETE FROM app_model WHERE True;

要在每个对象(每行的某些列)中设置某个字段,可以使用update()方法:

Model.objects.all().update( some_field = "" )

转换为:

UPDATE app_model SET `some_field` = '' WHERE True;

我的sql有点生疏,但我相信它或多或少都这样。

您可以参考这个 Django文档上get_or_create方法更详细的解释。 简而言之,它首先尝试使用提供的first_name和last_name进行获取,如果没有实例化并保存一个新对象,则在这种情况下将使用默认字典。 返回值是对应的对象,是否创建新对象则为True / False。

您可以使用任何东西。 如果您未设置任何默认值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM