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 つの CycleHeader を含めることができます。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 に答える