gpt4 book ai didi

python - get() 在标记为唯一的字段上排除 MultipleObjectsReturned

转载 作者:可可西里 更新时间:2023-11-01 08:54:51 26 4
gpt4 key购买 nike

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

uid = models.CharField(max_length=255, blank=False, null=False, unique=True)

我正在尝试使用 get() 来获取应与此 uid 匹配的一个配置文件:

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

最佳答案

您是否对管理器进行了任何修改?还是在调用 get() 之前对查询集进行任何类型的过滤?特别是,使用 Q 对象进行 OR bool 搜索通常会导致同一对象被多次返回。如果是这种情况,请在 get() 之前对查询集调用 distinct()

关于python - get() 在标记为唯一的字段上排除 MultipleObjectsReturned,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6780636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com