Django,如果对象不存在,则在和querys上获取错误

2024-06-02 12:00:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我想根据在Django中运行查询返回的值运行if条件。在

我要运行的查询是:

q = Voterlist.objects.get(Q(voter=request.user),Q(verse=verse)):

如果voterq的列表存在,请立即更新。 否则我想在数据库中添加该对象。这里的问题是,如果对象已经存在,即q存在,那么它运行良好,但是如果 q不存在,然后我得到一个500错误代码,该查询不运行。我尝试使用try块,也尝试使用查询执行if语句,但是如果q不存在,我就无法运行它。在


Tags: 对象django数据库列表getifobjectsrequest
2条回答

此查询不需要Q对象,只需执行以下操作:

q = Voterlist.objects.get(voter=request.user, verse=verse)

正如BodgiG建议的那样,您可以捕捉到q返回doesnotextist的情况。在

^{pr2}$

除了这样你试过吗?在

try:
    q = Voterlist.objects.get(Q(voter=request.user),Q(verse=verse))
except (VoterList.DoesNotExist, VoterList.MultipleObjectsReturned):
    # do something
    pass

更新:您还必须检查MultipleObjectsReturned异常,因为该查询可能会返回多个对象;这取决于您希望如何在一个或多个try-catch块中执行该操作

另外,编写get queryset时最好不要像下面这样的Q对象,这基本上是一样的:

^{pr2}$

相关问题 更多 >