带有queryset的条件在Django中不存在异常,但不使用try/excep

2024-04-16 20:12:14 发布

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

我需要用queryset结果生成一个“if”条件,如下所示:

group_child = Groups.objects.get(subgroup = kwargs["group_id"])
            if group_child is None:
                group = get_object_or_404(Groups, group = kwargs["group_id"])
                group.logic_delete()
                messages.success(request, "Deleted successfull")
            else:
                messages.error(request, "It has elements asociated")

但是如果queryset不存在,代码就不会进入条件,当然,它会抛出django异常,而且,我不确定“is None”在这个场景中是否有效。你知道吗

我知道解决这个问题的一种方法是使用try/except来捕获异常,但是我想知道是否有其他方法可以根据需要使用“if”语句。你知道吗

提前谢谢


Tags: 方法noneidchildgetifobjectsis
1条回答
网友
1楼 · 发布于 2024-04-16 20:12:14

^{}如果对象不在数据库中,则引发异常。可以使用^{}^{}的组合,如下所示:

group_child_qs = Groups.objects.filter(subgroup = kwargs["group_id"])
if group_child_qs.exists():
    group = group_child_qs.first() 
    group.logic_delete()
    messages.success(request, "Deleted successfully")
else:
    messages.error(request, "It has elements associated")

编辑:

正如@knbk提到的,这里有一个更优化的解决方案

group = Groups.objects.filter(subgroup = kwargs["group_id"]).first()
if group:
    group.logic_delete()
    messages.success(request, "Deleted successfully")
else:
    messages.error(request, "It has elements associated")

相关问题 更多 >