0
我想使用Django管理员允许基本管理页面菜单。我有一个主菜单,我决定使用子菜单进行扩展,以便在必要时进行下拉菜单。由于子菜单项与主菜单项I具有相同的字段,但使用继承是一个好主意,因此子菜单将继承主菜单中的所有字段,并具有外键关系,如下所示:Django模型继承数据保存在这两个模型
# main menu
class MainMenu(models.Model):
title = models.CharField(max_length=50)
url = models.URLField()
def __unicode__(self):
return self.title
class Meta:
verbose_name_plural = "Main Menu Items"
# submenu - for drop downs
class SubMenu(MainMenu):
main_menu = models.ForeignKey(MainMenu, related_name='+', null=True, blank=True)
class Meta:
verbose_name_plural = "Sub Menu Items"
我注册的模型与管理,但是当我在子菜单中保存项目,它不仅进入子菜单它使在主菜单中同一条目。任何ide我做错了什么?我是否需要以某种方式告诉Django我继承了MainMenu的方法而不保存到它?任何帮助非常感谢。
yeps,这就是继承在Django中的工作原理。所以你必须选择最适合你的东西:继承或外键。使用他们两个只是没有意义 – juliomalegria
我想我会通过避免创建基类节省一些时间,但实际上它非常快。这绝对是做到这一点的方法。感谢所有有用的输入! –