[英]get_or_create() question
从官方文档中我无法理解什么是默认参数。
obj, created = Person.objects.get_or_create(first_name='John', last_name='Lennon',
defaults={'birthday': date(1940, 10, 9)}
这是否意味着它将查找与John
和Lennon
参数都匹配的字段,并且将只插入生日? 我可以使用其他东西代替默认值吗?
我应该使用哪种方法来清理表(模型)中的所有字段?
它给我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.