在Django中,模型(Model)是与数据库交互的核心部分。Django提供了丰富的API来执行数据库的增删改查(CRUD)操作。以下是Django模型中常用的增删改查方法:
1. 创建(Create)
使用create()方法或save()方法来创建新的数据库记录。
# 使用 create() 方法
MyModel.objects.create(field1='value1', field2='value2')
# 使用 save() 方法
instance = MyModel(field1='value1', field2='value2')
instance.save()
MyModel.objects.create(field1='value1', field2='value2')
# 使用 save() 方法
instance = MyModel(field1='value1', field2='value2')
instance.save()
2. 查询(Retrieve)
Django提供了多种查询方法来从数据库中获取数据。
# 获取单个对象
obj = MyModel.objects.get(id=1)
# 获取所有对象
all_objects = MyModel.objects.all()
# 根据条件过滤
filtered_objects = MyModel.objects.filter(field1='value1')
# 排除满足条件的对象
excluded_objects = MyModel.objects.exclude(field1='value1')
# 获取查询结果的数量
count = MyModel.objects.filter(field1='value1').count()
# 检查是否存在满足条件的记录
exists = MyModel.objects.filter(field1='value1').exists()
# 按字段排序
ordered_objects = MyModel.objects.order_by('field1')
# 返回字典形式的结果
values_objects = MyModel.objects.values('field1', 'field2')
# 返回元组形式的结果
values_list_objects = MyModel.objects.values_list('field1', 'field2')
obj = MyModel.objects.get(id=1)
# 获取所有对象
all_objects = MyModel.objects.all()
# 根据条件过滤
filtered_objects = MyModel.objects.filter(field1='value1')
# 排除满足条件的对象
excluded_objects = MyModel.objects.exclude(field1='value1')
# 获取查询结果的数量
count = MyModel.objects.filter(field1='value1').count()
# 检查是否存在满足条件的记录
exists = MyModel.objects.filter(field1='value1').exists()
# 按字段排序
ordered_objects = MyModel.objects.order_by('field1')
# 返回字典形式的结果
values_objects = MyModel.objects.values('field1', 'field2')
# 返回元组形式的结果
values_list_objects = MyModel.objects.values_list('field1', 'field2')
3. 更新(Update)
更新数据库中的记录可以使用update()方法或save()方法。
# 批量更新
MyModel.objects.filter(field1='value1').update(field2='new_value')
# 单个对象更新
obj = MyModel.objects.get(id=1)
obj.field1 = 'new_value'
obj.save()
MyModel.objects.filter(field1='value1').update(field2='new_value')
# 单个对象更新
obj = MyModel.objects.get(id=1)
obj.field1 = 'new_value'
obj.save()
4. 删除(Delete)
删除数据库中的记录可以使用delete()方法。
# 删除单个对象
obj = MyModel.objects.get(id=1)
obj.delete()
# 批量删除
MyModel.objects.filter(field1='value1').delete()
obj = MyModel.objects.get(id=1)
obj.delete()
# 批量删除
MyModel.objects.filter(field1='value1').delete()