这是我的原理图模型:
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
将来我(或其他人)可能想要添加更多 Bill 类型。
每个法案都应该指向一项法律 (表明该法案将更改哪条法律)我的问题是:实现这一点的最佳方法是什么?
如果我 将 ForeignKey(Law) 添加到 Bill ,我会从每个法案到法律都有一个关系,但法律只会有 逆关系到账单(bill_set),而不是与每种类型的账单不同的逆关系。当然,我将能够过滤每种类型的账单以仅获取指向特定法律的账单,但这是我认为我需要经常使用的东西,所以我认为拥有 privatebill_set、governbill_set 等将使代码更具可读性。
另一种可能的解决方案是添加外键 到每个继承类 (这会给我一个 privatebill_set、governmentbill_set、futurebill_set),但这似乎很麻烦,因为我将依靠 future 的程序员来记住添加该关系。
你会如何解决这个问题?
最佳答案
也许你可以让你的 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
关于django - django 中多个继承类的反比关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2887408/