Python Django:如何通过相关_字段中的特定条目对_进行排序?
我在Django有一个典型的外侨关系:Python Django:如何通过相关_字段中的特定条目对_进行排序?,python,django,orm,Python,Django,Orm,我在Django有一个典型的外侨关系: class SchoolYear(models.Model): pass class CycleHeader(models.Model): schoolyear = models.ForeignKey(SchoolYear, related_name="cycles") # Index is D, or A1-A4 index = models.CharField(max_length=2) value = mod
class SchoolYear(models.Model):
pass
class CycleHeader(models.Model):
schoolyear = models.ForeignKey(SchoolYear, related_name="cycles")
# Index is D, or A1-A4
index = models.CharField(max_length=2)
value = models.IntegerField()
每个学年最多可有5名自行车车长。如果有任何CycleHeader,则有一个D记录。有时也有A1-A4的记录。我需要按D记录的值字段对学年记录进行排序
如果我使用schoolyears.order_by('cycles_index','cycles_value'),结果会因CycleHeader记录的数量而异。我想做的是用d记录或d记录的值来注释学年记录,但我似乎想不出一种方法来做到这一点。我遗漏了什么吗?由于这些提示,我最终想出了一个解决方案:
# schoolyears is a QuerySet based on earlier filtering
schoolyears1 = schoolyears.filter(cycles__index='D').order_by('cycles__value', 'school__name')
schoolyears2 = schoolyears.filter(cycles__isnull=True).order_by('school__name')
schoolyears = schoolyears2 | schoolyears1
您是否尝试过使用
-cycles\u index
进行降序排序?@BurhanKhalid-问题是我只想按D循环的值进行排序。不管我是否使用“-”,它仍然会将一个学年按4个周期进行排序,与只按D个周期进行排序的学年有所不同。然后需要一个过滤器,schoolyears.filter(cycles\u index='D')。order\u by…
然后将两个查询集(一个带过滤器,一个不带过滤器)的结果组合起来。这给了我需要的线索。