Вот мои схематические модели:
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
Возможно и вероятно, что в будущем я (или, возможно, кто-то еще) захочет добавить больше типов Билла.
Каждый законопроект должен указывать на закон (указывающий, какой закон изменит этот законопроект), и мой вопрос: Каков наилучший способ реализации этого?
Если я добавлю ForeignKey (Law) к законопроекту , я буду иметь отношение из каждого законопроекта к закону, но закон будет иметь только обратное отношение к законопроектам ( bill_set), а не различное обратное отношение к каждому типу счета. Конечно, я смогу отфильтровать каждый тип счета, чтобы получить только те, которые указывают на конкретный Закон, но я думаю, что мне придется часто его использовать, поэтому я думаю, что наличие privatebill_set, Governmentbill_set и т. Д. Сделало бы код более читабельным.
Другое возможное решение - добавить внешний ключ к каждому из наследуемых классов (это даст мне privatebill_set, Governmentbill_set, futurebill_set), но это кажется проблематичным, поскольку я буду полагаться на будущих программистов не забудьте добавить это отношение.
Как бы вы решили это?