get()除了标记为唯一的字段上的MultipleObjectsReturned

时间:2011-07-21 18:10:25

标签: python mysql django

我在一个标记为唯一的模型上有一个字段:

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异常,但我无法理解为什么我会在标记为唯一的字段上返回多个对象。

1 个答案:

答案 0 :(得分:1)

您是否对经理进行了任何修改?或者您在调用get()之前对查询集进行了哪种过滤?特别是,使用Q对象进行OR布尔搜索通常会导致多次返回相同的对象。如果是这种情况,请在distinct()之前在查询集上调用get()