Django 的 objects.get()
如果没有找到符合条件的东西,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用户能解释一下),因为这是一个相当有用的快捷方式,我偶尔会用到。