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)。