从官方文档中我无法理解什么是默认参数。
obj, created = Person.objects.get_or_create(first_name='John', last_name='Lennon',
defaults={'birthday': date(1940, 10, 9)}
这是否意味着它会查找与John
和Lennon
参数匹配的字段,而生日会插入?我可以使用别的东西而不是默认值吗?
我应该用什么方法来清理表格(模型)中的所有字段?
它给我FileField错误无法解析字段中的关键字默认值
所以我需要寻找fiels,如果我发现它 - 更新数据。如果我没有找到它,我必须创建新的字段...但是,正如我所说,当finde当前字段时,它不会更新我的默认字段。
答案 0 :(得分:4)
很明显 - 如果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有点生疏,但我相信它或多或少都是这样。
答案 1 :(得分:1)
有关get_or_create方法的更详细说明,请参阅this django文档。简而言之,它首先尝试使用提供的first_name和last_name,如果不是,则实例化并保存新对象,在这种情况下使用默认字典。返回值是相应的对象,无论是否创建了新对象,都返回True / False。
答案 2 :(得分:0)
你可以使用任何东西。默认如果你没有设置任何东西。