gpt4 book ai didi

python - Django 不区分大小写 "distinct"查询

转载 作者:太空狗 更新时间:2023-10-30 01:26:34 24 4
gpt4 key购买 nike

我正在使用这个 Django 查询

people.exclude(twitter_handle=None).distinct('twitter_handle').values_list('twitter_handle', flat=True)

我的不同查询返回两个对象例如:

['Abc','abc']

如何获得不区分大小写的结果?就像在这种情况下一样

['abc']

使用 django 1.9.6, python 2.7

最佳答案

您可以使用 .annotate()连同 Func() expressions在小写的 twitter_handle 值上应用 .distinct():

>>> from django.db.models.functions import Lower
>>> people.order_by().exclude(twitter_handle=None).annotate(handle_lower=Lower("twitter_handle")).distinct("handle_lower")

您不能将 values_list('twitter_handle', flat=True) 附加到上面的查询中,因为您不能将 distinct 应用到不存在的字段上存在于 values_list 中,所以你必须自己做:

 >>> queryset = people.order_by().exclude(twitter_handle=None).annotate(handle_lower=Lower("twitter_handle")).distinct("handle_lower")
>>> [p.twitter_handle for p in queryset]

或者您可以获得小写的 twitter_handle 值:

>>> people.order_by().exclude(twitter_handle=None).annotate(handle_lower=Lower("twitter_handle")).distinct("handle_lower").values_list("handle_lower", flat=True)

关于python - Django 不区分大小写 "distinct"查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44332481/

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