gpt4 book ai didi

python - 在同一模型中注释给出意想不到的结果

转载 作者:行者123 更新时间:2023-11-30 23:08:49 25 4
gpt4 key购买 nike

我的用户模型包含以下字段..

class User(models.Model):
user_id = models.CharField(max_length=40,unique=True)
user_name = models.CharField(max_length=40)
user_email = models.EmailField()
user_city = models.CharField(max_length=40)
class Meta:
ordering = ['user_id']
verbose_name = 'User MetaData'
verbose_name_plural = 'Users MetaData'
def __unicode__(self):
return self.user_id

现在我想按用户过滤前 10 个城市,即该城市用户数量前 10 个城市的列表。我使用了下面的语法,但我总是得到 city_count = 1..

User.objects.annotate(city_count=models.Count('user_city')) .order_by('-city_count'))[:10]

我也尝试了下面的语法,但结果相同......

User.objects.values('user_city').annotate(city_count=models.Count('user_id')) .order_by('-city_count'))[:10]

我哪里做错了?

最佳答案

我认为如果没有与User有关系的模型,您就无法做到这一点。基本上,您需要在另一个模型上运行查询,然后从另一个模型注释 user_city 。对于您的具体情况来说,这有点奇怪。

但是,您可以在 Python 中执行此操作。我的做法如下:

from collections import Counter
city_counter = Counter(User.objects.values_list('user_city', flat=True))
top_ten_cities_and_counts = city_counter.most_common()[:10]
top_ten_cities = [city for city, count in top_ten_cities_and_counts]

关于python - 在同一模型中注释给出意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31542372/

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