class Dad(models.Model):
name = models.CharField()
def __str__(self):
return self.name
class Son(Dad):
dad = models.ForeignKey(Dad, related_name='sons')
>>> dad = Dad(name="Leonid")
>>> dad.save()
>>> Dad.objects.all()
[<Dad: Leonid>]
>>> son = Son(name='Jason')
>>> dad.sons.add(son)
>>> Dad.objects.all()
[<Dad: Leonid>, <Dad: Jason>]
>>> Son.objects.all()
[<Son: Jason>]
我不想让杰森反对爸爸的经理。我不想使用自定义管理器来过滤爸爸。是否有一种不包括子类对象的优雅方式。
答案 0 :(得分:0)
您正在扩展Dad
以创建Son
模型,这在您的案例中是不正确的。目前,您的代码意味着每个Son
也是Dad
。将您的班级定义更改为:
class Son(models.Model):
您可以阅读有关model inheritance和foreign key relations的更多信息,这些概念似乎让您感到困惑。