我正在使用Django 1.5.1
,我想保存或更新模型。
我阅读了django文档,并且遇到了提供保存或更新的get_or_create
方法。有一种用法,如;
Model.objects.get_or_create(name='firstName',surname='lastName',defaults={'birthday': date(1990, 9, 21)})
defaults
字段仅用于获取。在设置阶段时,仅设置名称和姓氏。这就是我从文件中理解的。
所以我想做一些不同的事情,设置姓名,姓氏和birthDay,但获得姓名和姓氏,不包括生日。我无法在文档和其他地方看到这样做的方法。
我该怎么做?
谢谢!
答案 0 :(得分:3)
get_or_create
提供了获取或创建的方式。不保存或更新。它的想法是:我想获得一个模型,如果它不存在,我想创建它并获得它。
在Django中,您不必担心获取姓名或姓氏或任何属性。您将获得具有所有属性的模型实例,即
instance = Model.objects.get(name='firstName',surname='lastName')
print instance.birthday
print instance.name
print instance.surname
概念的概述可以是:Model
是具有一组属性的数据结构,实例是模型的特定实例(由primary_key
唯一标识({{1 (),一个数字),具有一组特定的属性(例如pk
)。
name="firstName"
用于转到数据库并检索具有特定属性或属性集的特定实例。
答案 1 :(得分:2)
自Django 1.7以来,有update_or_create
:
obj, created = Person.objects.update_or_create(
first_name='John',
last_name='Lennon',
defaults=updated_values
)
您提供的参数是用于查找现有对象的参数,defaults
是将在现有或新创建的对象上更新的参数。
返回一个元组,obj
是创建或更新的对象,created
是一个布尔值,指定是否创建了新对象。
文档:https://docs.djangoproject.com/en/1.8/ref/models/querysets/#update-or-create