【发布时间】:2021-12-29 16:21:28
【问题描述】:
尝试删除可能为空的 QuerySet 是否安全?换句话说,如果我不确定“MJ”这个名字是否存在,这两种方法之间有什么功能区别吗?是首选吗?
1)
query = m.objects.filter(name="MJ")
if query.exists():
query.get().delete()
m.objects.filter(name="MJ").delete()
【问题讨论】:
-
在此查询中,您尝试检索模型 m 中具有
"MJ"作为name字段值的所有对象。所以,如果你所说的安全,你的意思是“我要毁掉我的模型吗?”不,你不会发现问题。但是,您确定不会删除模型其他字段中包含的其他信息吗?我先去检查一下。 -
第二种方法更好,您也可以使用
m.objects.filter(name="MJ").first().delete()删除第一次出现的实例。
标签: django django-models django-queryset