我在一个标记为唯一的模型上有一个字段:
uid = models.CharField(max_length=255, blank=False, null=False, unique=True)
我正在尝试使用get()来获取与此uid匹配的一个Profile:
UserProfile.objects.get(uid=fr_uid)
问题是,即使该字段标记为唯一,此行也会为某些用户引发MultipleObjectsReturned
例外:
Line: return self.get_query_set().get(*args, **kwargs)
Local variables:
clone [<Profile: John Smith>, <Profile: John Smith>]
num 2
如果我从shell获得相同的配置文件,我只会得到一个:
Profile.objects.get(uid='abc1234')
<Profile: John Smith>
现在我明白我应该处理MultipleObjectsReturned
异常,但我无法理解为什么我会在标记为唯一的字段上返回多个对象。
答案 0 :(得分:1)
您是否对经理进行了任何修改?或者您在调用get()
之前对查询集进行了哪种过滤?特别是,使用Q
对象进行OR布尔搜索通常会导致多次返回相同的对象。如果是这种情况,请在distinct()
之前在查询集上调用get()
。