Python django models distinct仍在返回重复项
我被难住了。。。这可能很明显,但我似乎无法清楚地在这里删除重复项Python django models distinct仍在返回重复项,python,django,postgresql,django-models,Python,Django,Postgresql,Django Models,我被难住了。。。这可能很明显,但我似乎无法清楚地在这里删除重复项 q = SubscriberPhoneNumber.objects.values_list('phone_number',flat=True).order_by('phone_number').distinct('phone_number') print(q) <QuerySet ['9711231234', '5095551212', '9994441212', '9994441212', '9711231234']>
q = SubscriberPhoneNumber.objects.values_list('phone_number',flat=True).order_by('phone_number').distinct('phone_number')
print(q)
<QuerySet ['9711231234', '5095551212', '9994441212', '9994441212', '9711231234']>
我觉得我疯了。。。而且不明白为什么distinct
不消除重复项(我真的希望country\u code
和phone\u number
上有distinct,但只包括phone\u number
以简化问题)(我也不需要值列表,但我认为这可能有助于只选择我感兴趣的列)
(请注意,我当然可以将结果强制转换为
set
以获得唯一的值…但我觉得distinct是正确的方法,并且无法确定如何使其工作…您的phone\u number
字段是EncryptedCharField
,我假设您使用此软件包:。正如它在其存储库自述文件中所述:
由于加密数据的性质,按包含的值进行过滤
在加密字段中,将无法正常工作。排序也不是唯一的选择
支持
这就是您的独特甚至是订购不起作用的原因(['9711231234',5095551212','9994441212','9994441212','9711231234']
未订购)。一般来说,对某些东西进行加密并期望在其上生成这样的过滤器等并没有多大意义,如果您真的想做这种事情,请切换到普通的字符域derp:)谢谢。。。我觉得很明显。。。我只是错过了:)非常感谢:)
class SubscriberPhoneNumber(models.Model):
subscriber = models.ForeignKey(SystemStatusSubscriber, on_delete=models.CASCADE)
phone_number = EncryptedCharField(max_length=24, **null)
country_code = models.CharField(max_length=8, default='+1')