2

我正在使用Django 1.5.1并且我想保存或更新模型。

我阅读了 django 文档,并遇到了get_or_create提供保存或更新的方法。有这样的用法;

Model.objects.get_or_create(name='firstName',surname='lastName',defaults={'birthday': date(1990, 9, 21)})

defaults字段仅用于获取。在设置阶段时,仅设置名称和姓氏。这就是我从文件中了解到的。

所以我想做一些不同的事情,设置名称、姓氏和出生日期,但获取姓名和姓氏,不包括出生日期。我在文档和其他地方看不到这样做的方法。

我怎样才能做到这一点?

谢谢!

4

2 回答 2

3

get_or_create提供了一种获取或创建的方式。不保存或更新。它的想法是:我想得到一个模型,如果它不存在,我想创建它并得到它。

在 Django 中,您不必担心获取姓名或姓氏或任何属性。你得到一个具有所有属性的模型实例,即

instance = Model.objects.get(name='firstName',surname='lastName')

print instance.birthday
print instance.name
print instance.surname

这个想法的概述可能是:aModel是具有一组属性的数据结构,实例是具有特定属性集(例如 )的模型的特定实例(由primary_key( pk) 唯一标识,一个数字name="firstName")。

Model.objects.get用于访问数据库并检索具有特定属性或一组属性的特定实例。

于 2013-07-19T08:41:47.510 回答
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

于 2015-06-18T13:26:05.087 回答