Django 的 objects.get()

3 投票
3 回答
7015 浏览
提问于 2025-04-15 20:40

如果没有找到符合条件的东西,get就会返回一个错误。

我想表达的是:如果找到了就获取,找不到的话就什么也不返回。

3 个回答

2

或者你可以试试django annoying这个库

pip install django-annoying

然后导入 get_object_or_None(klass, *args, **kwargs) 这个函数

from annoying.functions import get_object_or_None
get_object_or_None(User, email='test@test.com')

这是项目的 GitHub 仓库

3

使用 try/except 语句或者 get_object_or_404 这个方法。

7

你可以像这样创建一个快捷方式(基于get_object_or_404):

from django.shortcuts import _get_queryset

def get_object_or_none(klass, *args, **kwargs):
  queryset = _get_queryset(klass)
  try:
    return queryset.get(*args, **kwargs)
  except queryset.model.DoesNotExist:
    return None

我不太明白为什么这个快捷方式不存在(也许有经验的django用户能解释一下),因为这是一个相当有用的快捷方式,我偶尔会用到。

撰写回答