主页 > 创业  > 

Django模型管理器/QuerySet常见的方法

Django模型管理器/QuerySet常见的方法
模型管理器/QuerySet 常见的方法 get([**kwargs]) 方法 用途:获取满足条件的唯一对象。参数:关键字参数,指定查询条件。返回值:模型对象。异常:如果找到多个对象或未找到对象,将分别抛出 MultipleObjectsReturned 和 DoesNotExist 异常。

示例:

try: student = Student.objects.get(pk=1) except Student.DoesNotExist: print("No student found with pk=1") except Student.MultipleObjectsReturned: print("Multiple students found with the same pk") first() 方法 用途:返回查询集中的第一个对象(如果存在)。参数:无。返回值:模型对象或 None(如果查询集为空)。

示例:

student = Student.objects.filter(age__gt=18).first() if student: print(student.name) else: print("No student older than 18 found") last() 方法 用途:返回查询集中的最后一个对象(如果存在)。参数:无。返回值:模型对象或 None(如果查询集为空)。

示例:

student = Student.objects.filter(graduated=False).last() if student: print(student.name) else: print("No current student found") count() 方法 用途:返回查询集中的对象数量。参数:无。返回值:整数。

示例:

num_students = Student.objects.count() print(f"Total number of students: {num_students}") filter(**kwargs) 方法 用途:根据给定的条件筛选对象。参数:关键字参数,指定查询条件。返回值:QuerySet 对象。

示例(已在问题描述中给出)。

exclude(**kwargs) 方法 用途:排除满足给定条件的对象。参数:关键字参数,指定排除条件。返回值:QuerySet 对象。

示例(已在问题描述中给出)。

all() 方法 用途:获取查询集中的所有对象。参数:无。返回值:QuerySet 对象。

示例(已在问题描述中给出)。

values(*fields) 方法 用途:返回包含指定字段值的字典的 QuerySet。参数:字段名称的列表或可变参数。返回值:包含字典的 QuerySet 对象。

示例(已在问题描述中给出),但注意,values() 返回的 QuerySet 中的每个元素都是字典,而不是模型实例。

order_by(*fields) 方法 用途:对查询结果进行排序。参数:字段名称的列表或可变参数。字段前加 - 表示降序排序。返回值:排序后的 QuerySet 对象。

示例(已在问题描述中给出)。

distinct() 方法 用途:对查询结果进行去重。参数:无。返回值:去重后的 QuerySet 对象。注意:通常与 values() 方法一起使用以指定去重的字段。

示例(稍作修改):

# 假设有多个学生可能有相同的姓名和性别,但其他字段不同 unique_names_sexes = Student.objects.values("name", "sex").distinct() for item in unique_names_sexes: print(item) 额外方法 exists() 方法 用途:检查查询集是否包含至少一个对象。参数:无。返回值:布尔值。

示例:

if Student.objects.filter(enrolled=True).exists(): print("There are enrolled students") values_list(*fields, flat=False) 方法 用途:返回包含指定字段值的元组的 QuerySet。参数:字段名称的列表或可变参数;flat=True 时,如果查询集只包含一个字段,则返回该字段值的列表而不是元组的列表。返回值:包含元组的 QuerySet 对象或字段值的列表(如果 flat=True)。

示例:

# 获取所有学生的ID和姓名,作为元组列表 students_info = Student.objects.values_list("id", "name") for student_info in students_info: print(student_info) # 仅获取所有学生的姓名,作为列表 students_names = Student.objects.values_list("name", flat=True) for name in students_names: print(name)

这些方法提供了强大的查询和数据处理能力,使得Django的ORM成为处理数据库操作的有力工具。

标签:

Django模型管理器/QuerySet常见的方法由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Django模型管理器/QuerySet常见的方法