0

我在 Django 中有一个典型的 ForeignKey 关系:

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()

每个 SchoolYear 最多可以有 5 个 CycleHeaders。如果根本有任何 CycleHeader,则有 D 记录。有时也有 A1-A4 的记录。我需要按 D 记录的值字段对 SchoolYear 记录进行排序。

如果我使用 schoolyears.order_by('cycles_ index', 'cycles _value'),结果会因 CycleHeader 记录的数量而异。我想做的是用 D 记录或 D 记录的值来注释学年记录,我似乎无法找到一种方法来做到这一点。我错过了什么吗?

4

1 回答 1

0

由于提示,这是我最终想出的解决方案:

    # 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
于 2013-09-05T06:28:10.693 回答