我对 django 模型和继承有疑问。
我定义了一个仪表板和一个模块列表,如下所示:
class Dashboard(models.Model):
name = models.CharField(max_length=255)
class DashboardModule(models.Model):
dashboard = models.ForeignKey(Dashboard, related_name='modules')
position_line = models.IntegerField(default=1)
position_col = models.IntegerField(default=1)
def render(self):
return 'hehe'
class Custom1DashboardModule(DashboardModule):
#custom fields and methods
def render(self):
return 'toto'
class Custom2DashboardModule(DashboardModule):
#custom fields and methods
...
我使用这样的代码:
dashboard = Dashboard()
dashboard.name = 'my dashboard'
dashboard.save()
module = Custom1DashboardModule()
module.dashboard = dashboard
module.save()
module = Custom2DashboardModule()
module.dashboard = dashboard
module.save()
那么当我这样做的时候
dashboard.modules.all()
我得到一个 DashboardModule 列表而不是自定义列表。我明白为什么,但这是一个问题。
有解决我的问题的方法吗?也许我必须重新考虑架构?