Django保存或更新模型

时间:2013-07-19 08:32:33

标签: python django django-models

我正在使用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,但获得姓名和姓氏,不包括生日。我无法在文档和其他地方看到这样做的方法。

我该怎么做?

谢谢!

2 个答案:

答案 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