我有一个像下面这样的模型,它变得太大,需要拆分成一个单独的活动表。一天结束时,一个表将包含所有对象,而另一个表将仅包含活动对象。
class Tickets(models.Model):
price = ....
number = .....
date = ....
active = ....
parent = models.ForeignKey('self', related_name='children')
ManyMoreFields
复杂性有两个来源:
1) ActiveTickets 表的父字段将指向Tickets 表。related_name 不应更改。
2) ActiveTickets 和Tickets 表都有从它们继承的代理模型。
class CityTickets(Tickets):
class Meta:
proxy = True
class ActiveCityTickets(ActiveTickets):
class Meta:
proxy = True
显然,我可以复制并粘贴 Ticket 中的所有字段(有很多),但这不是正确的做法。我尝试使用抽象继承和 Mixins(在由门票和 ActiveTickets 继承的单独类中定义字段)。
抽象继承的一个问题是 ForeignKey 字段 parent 会导致问题,因为它是重复的,并且 related_name 是相同的。通常,我的尝试导致我的单元和功能测试失败。
这里有哪些优雅的方法?我是否应该考虑创建两个单独的 MySQL 表,然后只使用具有多个管理器(和 db 路由器)的单个模型?这合理吗?