Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:如何通过相关_字段中的特定条目对_进行排序?_Python_Django_Orm - Fatal编程技术网

Python 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

我在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 = 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…
然后将两个查询集(一个带过滤器,一个不带过滤器)的结果组合起来。这给了我需要的线索。