Django ORM 数据库操作方法文档
1. get()
功能:
get()
方法用于从数据库中检索符合指定条件的单个对象。如果没有找到对象,或找到多个对象,将引发异常。
用法:
obj = ModelName.objects.get(field_name=value)
返回参数:
- 返回:符合查询条件的单个对象。
- 异常:
ModelName.DoesNotExist
:如果没有找到匹配的记录。ModelName.MultipleObjectsReturned
:如果找到多个匹配的记录。
2. filter()
功能:
filter()
方法用于检索符合条件的一组对象,返回一个查询集(QuerySet),即使只有一个对象符合条件。
用法:
queryset = ModelName.objects.filter(field_name=value)
返回参数:
- 返回:一个包含所有符合条件的对象的查询集(QuerySet)。
3. exclude()
功能:
exclude()
方法用于检索不符合指定条件的对象集,返回一个查询集(QuerySet)。
用法:
queryset = ModelName.objects.exclude(field_name=value)
返回参数:
- 返回:一个不包含指定条件对象的查询集(QuerySet)。
4. all()
功能:
all()
方法用于获取模型的所有对象,返回一个查询集(QuerySet)。
用法:
queryset = ModelName.objects.all()
返回参数:
- 返回:一个包含模型所有对象的查询集(QuerySet)。
5. create()
功能:
create()
方法用于在数据库中创建一个新对象。
用法:
obj = ModelName.objects.create(field_name=value)
返回参数:
- 返回:创建的模型对象实例。
6. update_or_create()
功能:
update_or_create()
方法用于更新现有记录或创建新记录。若找到匹配的记录,则更新它,否则创建新记录。
用法:
obj, created = ModelName.objects.update_or_create(defaults={...}, field_name=value)
返回参数:
- 返回:一个元组:
- obj:更新或创建的模型实例。
- created:布尔值,表示是否创建了新记录。
7. get_or_create()
功能:
get_or_create()
方法尝试获取对象,如果对象不存在,则创建它。
用法:
obj, created = ModelName.objects.get_or_create(defaults={...}, field_name=value)
返回参数:
- 返回:一个元组:
- obj:获取或创建的模型实例。
- created:布尔值,表示是否创建了新记录。
8. bulk_create()
功能:
bulk_create()
方法用于批量创建多个对象。
用法:
ModelName.objects.bulk_create([
ModelName(field_name=value),
ModelName(field_name=value),
...
])
返回参数:
- 返回:一个包含创建对象的列表。
9. bulk_update()
功能:
bulk_update()
方法用于批量更新多个对象。
用法:
ModelName.objects.bulk_update(objs, ['field_name'])
返回参数:
- 返回:更新的行数。
10. delete()
功能:
delete()
方法用于删除对象或查询集中的所有对象。
用法:
ModelName.objects.filter(field_name=value).delete()
返回参数:
- 返回:一个元组,包含删除的对象数量和每个对象类型的数量。
11. count()
功能:
count()
方法用于计算查询集中的对象数量。
用法:
count = ModelName.objects.filter(field_name=value).count()
返回参数:
- 返回:符合条件的对象数量。
12. aggregate()
功能:
aggregate()
方法用于执行聚合操作,如求和、平均值、最大值等。
用法:
result = ModelName.objects.aggregate(Sum('field_name'))
返回参数:
- 返回:一个字典,包含聚合结果。
13. annotate()
功能:
annotate()
方法用于对查询集的对象进行注释,通常用于添加聚合值或计算结果。
用法:
queryset = ModelName.objects.annotate(new_field=Expression)
返回参数:
- 返回:带有注释字段的查询集(QuerySet)。
14. values()
功能:
values()
方法返回查询集中的对象的字段和值,以字典形式表示。
用法:
queryset = ModelName.objects.values('field_name')
返回参数:
- 返回:一个查询集,包含字段和值的字典列表。
15. values_list()
功能:
values_list()
方法类似于 values()
,但返回的是元组列表,而不是字典列表。
用法:
queryset = ModelName.objects.values_list('field_name', flat=True)
返回参数:
- 返回:一个查询集,包含元组列表。
16. order_by()
功能:
order_by()
方法用于对查询集进行排序。
用法:
queryset = ModelName.objects.order_by('field_name')
返回参数:
- 返回:排序后的查询集(QuerySet)。
17. distinct()
功能:
distinct()
方法用于返回查询集中的唯一记录。
用法:
queryset = ModelName.objects.distinct('field_name')
返回参数:
- 返回:去重后的查询集(QuerySet)。
18. select_related()
功能:
select_related()
方法用于在一个查询中获取相关对象,减少数据库查询次数。
用法:
queryset = ModelName.objects.select_related('related_model_name')
返回参数:
- 返回:预取相关对象的查询集(QuerySet)。
19. prefetch_related()
功能:
prefetch_related()
方法用于在一个查询中获取多个相关对象集,减少数据库查询次数。
用法:
queryset = ModelName.objects.prefetch_related('related_model_name')
返回参数:
- 返回:预取多个相关对象集的查询集(QuerySet)。
20. raw()
功能:
raw()
方法用于执行原生 SQL 查询。
用法:
queryset = ModelName.objects.raw('SELECT * FROM app_modelname WHERE ...')
返回参数:
- 返回:执行原生 SQL 查询的查询集(QuerySet)。