Django中按反转外键属性排序?
我有以下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。确实可以这样
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(“组”)
,以仅获取唯一的组吗?