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的结构,指向任何其他模型