在Django中,MySQL设置了以下查询
data = Recording.objects.get(Q(name ='xyz')| Q(name =“default”))
这个抛出MultipleObjectsReturned
,因为xyz
和default
记录都存在于DB中,而MySQL在OR operation
个查询中返回两个对象。 (这是正确的MySQL行为)
在Django / MySQL中是否有一种方法,即使两个记录都存在于DB中,上述查询也只返回一个对象?
注意:约束只有1个查询应该用于获取数据,查询应该首先返回特定对象(即xyz)。如果它不存在,则default
对象被退回
答案 0 :(得分:1)
.get
应该用于检索单个记录。否则使用filter
:
data = Recording.objects.filter(Q(name='xyz') | Q(name="default")).first()
如果哪一个很重要,请使用order_by
来安排订单。
你也可以使用:
data = Recording.objects.filter(Q(name='xyz') | Q(name="default"))[0]
实际上是一样的。有关详细信息,请参阅Django docs。