gpt4 book ai didi

python - Django:根据注释获取重复项

转载 作者:行者123 更新时间:2023-11-28 22:23:34 25 4
gpt4 key购买 nike

我想根据不区分大小写的字段值获取所有重复项。

基本上是重写这个 SQL 查询

SELECT count(*), lower(name)
FROM manufacturer
GROUP BY lower(name)
HAVING count(*) > 1;

使用 Django ORM。我希望这样的事情可以解决问题

from django.db.models import Count
from django.db.models.functions import Lower

from myapp.models import Manufacturer


qs = Manufacturer.objects.annotate(
name_lower=Lower('name'),
cnt=Count('name_lower')
).filter('cnt__gt'=1)

当然没用。

知道怎么做吗?

最佳答案

你可以试试:

qs = Manufacturer.objects.annotate(lname=Lower('name')
).values('lname').annotate(cnt=Count(Lower('name'))
).values('lname', 'cnt').filter(cnt__gt=1).order_by('lname', 'cnt')

为什么要添加order_by ordering-or-order-by :

sql 查询看起来像:

SELECT 
LOWER("products_manufacturer"."name") AS "lname",
COUNT(LOWER("products_manufacturer"."name")) AS "cnt"
FROM "products_manufacturer"
GROUP BY LOWER("products_manufacturer"."name")
HAVING COUNT(LOWER("products_manufacturer"."name")) > 1
ORDER BY "lname" ASC, "cnt" ASC

关于python - Django:根据注释获取重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46933940/

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