Python Django2 model 查询介绍(条件、范围、模糊查询

1. 引言

Python Django是一种高级的Web框架,它提供了许多强大的工具和功能,使得开发Web应用变得快速和便捷。在Django中,Model是一种用于定义数据库模型的工具,它允许我们通过简单的Python代码来操作数据库。本文将介绍如何使用Django的Model来进行查询操作,包括条件查询、范围查询和模糊查询。

2. 条件查询

2.1 使用filter

在Django中,我们可以使用filter()方法来进行条件查询。该方法接受一个包含查询条件的参数,并返回满足条件的查询集(QuerySet)。

from myapp.models import Person

# 查询年龄等于18的人

people = Person.objects.filter(age=18)

for person in people:

print(person.name)

上述代码中,我们通过filter()方法查询年龄等于18的人,并将结果保存在people中。然后,我们遍历结果并打印每个人的名字。

2.2 使用exclude

除了filter()方法,Django还提供了exclude()方法,用于排除满足条件的对象。当我们想要查找不满足某个条件的对象时,可以使用该方法。

from myapp.models import Person

# 查询年龄不等于18的人

people = Person.objects.exclude(age=18)

for person in people:

print(person.name)

上述代码中,我们使用exclude()方法查询年龄不等于18的人,并打印结果。

2.3 使用Q对象

有时候,我们需要使用复杂的查询条件,例如同时满足多个条件或者使用逻辑运算符进行条件组合。在这种情况下,我们可以使用Django的Q对象。

from myapp.models import Person

from django.db.models import Q

# 查询年龄等于18或者姓名含有"John"的人

people = Person.objects.filter(Q(age=18) | Q(name__contains='John'))

for person in people:

print(person.name)

上述代码中,我们使用Q()方法创建了一个Q对象,其中包含了两个条件,即年龄等于18或者姓名含有"John"。然后,我们使用filter()方法查询满足条件的人,并打印结果。

3. 范围查询

3.1 使用range

在Django中,我们可以使用range()方法进行范围查询。该方法接受两个参数,用于指定范围的上限和下限。

from myapp.models import Person

# 查询年龄在18到30之间的人

people = Person.objects.filter(age__range=(18, 30))

for person in people:

print(person.name)

上述代码中,我们使用filter()方法查询年龄在18到30之间的人,并打印结果。

3.2 使用lt、lte、gt、gte

除了range()方法,Django还提供了ltltegtgte等方法用于进行比较操作。

from myapp.models import Person

# 查询年龄大于18的人

people = Person.objects.filter(age__gt=18)

for person in people:

print(person.name)

上述代码中,我们使用filter()方法查询年龄大于18的人,并打印结果。

4. 模糊查询

4.1 使用contains

在Django中,我们可以使用contains方法进行模糊查询。该方法接受一个字符串参数,用于指定查询的模糊条件。

from myapp.models import Person

# 查询名字含有"John"的人

people = Person.objects.filter(name__contains='John')

for person in people:

print(person.name)

上述代码中,我们使用filter()方法查询名字含有"John"的人,并打印结果。

4.2 使用startswith和endswith

除了contains方法,Django还提供了startswithendswith方法用于指定查询字符串的开头和结尾。

from myapp.models import Person

# 查询名字以"John"开头的人

people = Person.objects.filter(name__startswith='John')

for person in people:

print(person.name)

上述代码中,我们使用filter()方法查询名字以"John"开头的人,并打印结果。

5. 结论

通过本文的介绍,我们了解了如何使用Django的Model进行条件查询、范围查询和模糊查询。这些查询操作可以帮助我们方便地从数据库中获取我们所需要的数据。在实际开发中,我们可以根据具体需求选择合适的查询方式,提高开发效率和代码可读性。

后端开发标签