Pau*_*jan 10 django foreign-keys django-models
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
Run Code Online (Sandbox Code Playgroud)
我可以 :
Achievement.objects.get(pk="1").parent_achievement
Run Code Online (Sandbox Code Playgroud)
这很棒.但我如何让所有的孩子?
Achievement.objects.get(pk="1").parent_achievement_set
Run Code Online (Sandbox Code Playgroud)
不起作用(可能应该有一些更多的符号),我搜索时没有看到太多.
可能吗?陷入SQL?
Sin*_*ion 16
默认情况下,django将反向调用模型名称,然后调用"_set",这样就可以了
Achievement.objects.get(pk="1").achievement_set
Run Code Online (Sandbox Code Playgroud)
如果这不适合您,请使用related_name
可选参数models.ForeignKey
:
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",
related_name="child_achievement_set"
) # long name since parent is reserved
Achievement.objects.get(pk="1").child_achievement_set
Run Code Online (Sandbox Code Playgroud)