详解Django的 get_or_none() 函数:获取对象或返回 None

  • Post category:Python

get_or_none函数是Django ORM中的一个常用函数。它与 get() 函数的作用很相似,但当查询结果不存在时,get_or_none() 不会抛出 DoesNotExist 异常,而是返回 None,从而可以方便地进行后续的判断处理。

get_or_none()函数的使用方法如下:

try:
    obj = ModelName.objects.get(**kwargs)
except ModelName.DoesNotExist:
    obj = None

其中,ModelName是指数据库模型的名称,**kwargs 是指查询条件,例如 {‘id’: 1}。

下面来看两个使用示例:

  1. 假设有一个 Blog 模型,存储了多个博客文章的信息。现在我们需要查询一个指定 ID 的博客文章,如果该博客不存在,则返回 None。
class Blog(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

blog_id = 1
blog = Blog.objects.get_or_none(id=blog_id)
if blog is None:
    print('该博客不存在')
else:
    print('博客标题为:' + blog.title)
  1. 假设有一个 Person 模型,存储了多个人的信息。现在我们需要查询一个指定名字的人,如果该人不存在,则返回 None。
class Person(models.Model):
    name = models.CharField(max_length=50)
    age = models.IntegerField()

person_name = 'Tom'
person = Person.objects.get_or_none(name=person_name)
if person is None:
    print('该人不存在')
else:
    print('该人的年龄为:' + person.age)

通过以上两个示例,我们可以看出 get_or_none() 函数的作用,即方便地查询某一个特定条件的数据,同时还可以进行非空判断,以避免出现异常。