class Achievement(MyBaseModel):
parent_achievement = models.ForeignKey('self', blank=True, null=True, help_text="An achievement that must be done before this one is achieved") # long name since parent is reserved
我能做到:
Achievement.objects.get(pk="1").parent_achievement
这很棒。但是我如何让所有的孩子都接受?
Achievement.objects.get(pk="1").parent_achievement_set
不起作用(可能应该有更多的符号),搜索时我没有看到太多。
有可能吗?落入SQL?
答案 0 :(得分:16)
默认情况下,django将反向调用模型名称,后跟“_set”,因此它将是
Achievement.objects.get(pk="1").achievement_set
如果这不适合您,请使用related_name
的{{1}}可选参数:
models.ForeignKey
答案 1 :(得分:1)
不知道这是否是最佳方式,但这也可以完成工作
Achievement.objects.filter(parent_achievement=1)
或
Achievement.objects.filter(parent_achievement__pk=1)