我有以下领域的用户模型..标注在同一模型给人意想不到的结果
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_ID' user_city“工作? –
如果您以@DanielRoseman建议的方式将'user_id'替换为'user_city',那么您的最后一个示例工作正常。 – f43d65
@DanielRoseman我试过,但没有工作.. – Naresh