Django中按反转外键属性排序?

Django中按反转外键属性排序?,django,django-models,django-queryset,Django,Django Models,Django Queryset,我有以下Django型号: class City(models.Model): ... region = models.CharField(...) group = models.ForeignKey(CityGroup, null=True) class CityGroup(models.Model): ... 城市组中的城市都具有相同的区域。是否可以按城市区域对城市组进行排序?(最好只有一个查询)。我希望避免将区域字段移动到CityGroup。确实可以这样

我有以下Django型号:

class City(models.Model):
    ...
    region = models.CharField(...)
    group = models.ForeignKey(CityGroup, null=True)

class CityGroup(models.Model):
    ...
城市组中的城市都具有相同的区域。是否可以按城市区域对城市组进行排序?(最好只有一个查询)。我希望避免将区域字段移动到CityGroup。

确实可以这样做

query = CityGroup.objects.all().order_by('city__region')

可能是
city\uuuuu region\uu name
region
模型上的某个其他字段,我认为上面会按
region
pk排序,但OP没有实际指定。上面的
region
CharField
。但是你是对的,如果它是外键的话。哦,是的。我应该仔细阅读。嗯,考虑到
CityGroup
有多个
city
关系,我想知道上面的方法是否有效——即使它们都在同一个区域,DBM也无法知道或执行。我想是非规范化的危害。它并没有按照我想要的方式工作。Django接受了该查询,但它产生了重复的CityGroup。不太清楚Django如何解释这种类型的查询(当一个城市组有多个城市时)?您不能查询
城市
,并在那里添加一个
.distinct(“组”)
,以仅获取唯一的组吗?