2024-06-02 12:00:41 发布
网友
我想根据在Django中运行查询返回的值运行if条件。在
我要运行的查询是:
q = Voterlist.objects.get(Q(voter=request.user),Q(verse=verse)):
如果voterq的列表存在,请立即更新。 否则我想在数据库中添加该对象。这里的问题是,如果对象已经存在,即q存在,那么它运行良好,但是如果 q不存在,然后我得到一个500错误代码,该查询不运行。我尝试使用try块,也尝试使用查询执行if语句,但是如果q不存在,我就无法运行它。在
此查询不需要Q对象,只需执行以下操作:
Q
q = Voterlist.objects.get(voter=request.user, verse=verse)
正如BodgiG建议的那样,您可以捕捉到q返回doesnotextist的情况。在
q
除了这样你试过吗?在
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对象,这基本上是一样的:
此查询不需要
Q
对象,只需执行以下操作:正如BodgiG建议的那样,您可以捕捉到
^{pr2}$q
返回doesnotextist的情况。在除了这样你试过吗?在
更新:您还必须检查MultipleObjectsReturned异常,因为该查询可能会返回多个对象;这取决于您希望如何在一个或多个try-catch块中执行该操作
另外,编写get queryset时最好不要像下面这样的Q对象,这基本上是一样的:
^{pr2}$相关问题 更多 >
编程相关推荐