django中多个继承类的反向关系

django中多个继承类的反向关系,django,django-models,inheritance,Django,Django Models,Inheritance,以下是我的示意图模型: class Law(models.Model): ... class Bill(models.Model): ... # data for a proposed law, or change of an existing law class PrivateBill(Bill): ... # data for a Bill that was initiated by a parliament member class GovernmentBi

以下是我的示意图模型:

class Law(models.Model):
    ... 

class Bill(models.Model):
    ... # data for a proposed law, or change of an existing law

class PrivateBill(Bill):
    ... # data for a Bill that was initiated by a parliament member

class GovernmentBill(Bill):
    ... # data for a Bill that was initiated by the government
将来我(或者其他人)可能会想要添加更多的账单类型

每一项法案都应该指向一项法律(指明这项法案将要修改的法律),我的问题是:实施这项法案的最佳方式是什么?

如果我将外币(法律)添加到法案中,我将拥有每个法案与法律之间的关系,但法律只会与法案(法案集)具有反向关系,而不会与每种类型的法案具有不同的反向关系。当然,我可以过滤每种类型的法案,只得到那些指向特定法律的法案,但这是我认为我需要经常使用的东西,所以我认为拥有私人法案集、政府法案集等将使代码更具可读性

另一种可能的解决方案是将外键添加到每个继承类中(这将给我一个privatebill\u集、governmentbill\u集、futurebill\u集),但这似乎很棘手,因为我将依赖未来的程序员记住添加这种关系


您将如何解决此问题?

也许您可以将您的Bill类抽象化,并按如下方式执行:

class Bill(models.Model):
    law = models.ForeignKey(Law, related_name="%(app_label)s_%(class)s_related")

    class Meta:
        abstract = True

class PrivateBill(Bill):
    pass

class GovernmentBill(Bill):
    pass
这可能是一种方法——它们允许您拥有类似于ForeignKey的结构,指向任何其他模型