exists()
是Django ORM QuerySet对象的一个方法,用于判断查询结果是否存在。其返回值为布尔类型,如果查询结果存在,返回True;否则返回False。
exists()
的使用方法如下:
queryset.exists()
其中,queryset
为QuerySet对象。该方法不会模仿查询,只是检查QuerySet对象中是否有至少一行记录。
例如,我们有如下模型:
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
现在我们有两条记录:
Person.objects.create(name='Alice', age=18)
Person.objects.create(name='Bob', age=20)
我们可以使用exists()
方法,以及filter()
方法来检查是否存在指定的结果:
# 确认有名字为'Alice'的记录存在:
exists = Person.objects.filter(name='Alice').exists()
if exists:
print('存在名字为Alice的记录')
else:
print('不存在名字为Alice的记录')
# 确认年龄等于21的记录是否存在:
exists = Person.objects.filter(age=21).exists()
if exists:
print('存在年龄为21的记录')
else:
print('不存在年龄为21的记录')
这将输出:
存在名字为Alice的记录
不存在年龄为21的记录
这里提供一个更为实际的例子。我们假设有一个Blog模型:
class Blog(models.Model):
name = models.CharField(max_length=100)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
现在,我们希望检查名字为’Hello World!’的博客是否存在。代码如下:
blog_exists = Blog.objects.filter(name='Hello World!').exists()
if blog_exists:
print('存在名为Hello World!的博客')
else:
print('不存在名为Hello World!的博客')
如果数据库中存在名为’Hello World!’的博客,将输出“存在名为Hello World!的博客”;否则将输出“不存在名为Hello World!的博客”。
再举一个例子,我们假设有Article模型:
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
is_published = models.BooleanField(default=False)
pub_date = models.DateTimeField(null=True, blank=True)
现在我们希望检查是否有已经发布(is_published=True)的文章。代码如下:
published_exists = Article.objects.filter(is_published=True).exists()
if published_exists:
print('已经有文章被发布了')
else:
print('目前没有文章被发布')
如果数据库中存在已经发布的文章,将输出“已经有文章被发布了”;否则将输出“目前没有文章被发布”。