create_or_update()
是 Django 中一个非常有用的函数,可以用来根据给定的条件对数据库中的记录进行增删改查等操作。它的具体作用是:在数据表中创建新纪录,或是更新已存在的记录。
create_or_update()
函数的用法如下:
from django.db.models import F
from django.db.models import Q
Model.objects.update_or_create(
defaults={},
**kwargs
)
其中 Model
是你要进行操作的数据表对应的 Model 类。
defaults
参数是一个字典,用来指定要更新的字段及其对应的值。
**kwargs
是以键值对形式提供过滤条件。注意,至少有一个必须提供过滤条件,否则会抛出异常。
以下是两个实例说明:
- 假设我们有一个名为
Student
的 Model 类,它有三个字段:id
、name
和age
,其中id
是自增主键。
现在我们要向数据库中添加一条新记录,如果数据库中已经有了这个学生的信息(即 name
和 age
的值都相同),则更新该学生的信息,否则直接添加一条新记录。代码如下:
python
Student.objects.update_or_create(
name='张三', age=18,
defaults={'name': '张三', 'age': 18}
)
如果数据库中不存在 name
和 age
均为 '张三'
和 18
的记录,那么将创建一条新纪录,并返回创建的对象;否则,将更新已存在的记录。
- 假设我们有一个名为
Book
的 Model 类,它有三个字段:id
、name
和price
,其中id
是自增主键。
现在我们要更新 Book
表中所有价格为 50
的书名,将它们的价格改为 60
。代码如下:
python
Book.objects.update_or_create(
price=50,
defaults={'price': F('price') + 10}
)
这里我们使用了 Django 中的 F
对象,它可以用来代表数据库中的字段或操作。在上面的例子中,F('price')
表示 price
字段的值,F('price') + 10
表示将 price
字段的值加上 10
。
以上就是 create_or_update()
函数的作用与使用方法的完整攻略。需要注意的是,这个函数的返回值是一个元组,包含两个值:更新后的对象以及一个 boolean 值,表示是创建了新纪录还是更新了已存在的记录。