如何在 Django 中反转多个级别的查询对象?

How to reverse query objects for multiple levels in django?

假设我有:

Class Level1:
    name = CharField()

Class Level2:
    name = CharField()
    level1 = ForeignKey(Level1)

Class Level3:
    name = CharField()
    level2 = ForeignKey(Level2)

Class Level4:
    name = CharField()
    level3 = ForeignKey(Level3)

假设我已经有一个Level1对象:level1,如何获取Level1的所有Level4对象?

喜欢的意思:level1.level2_set.level3_set.level4_set.

基于 docs,我会使用:

Level4.objects.filter(name="...", level3__name="...", level3__level2__name="...", level3__level2__level1__name="...")

您从要获取其对象的模型 Level4 开始,然后遵循双下划线语法的关系。

Level4.objects.filter(level3__level2__level1=my_level1_object)