我正在使用 Django 模型抽象基类从数据库生成我的网站菜单。我的模型如下所示:
# ABSTRACT MENU
class Menu(models.Model):
position = models.IntegerField("Item Position", max_length=2, unique=False)
title_en = models.CharField("Title (English)", max_length=50)
title_es = models.CharField("Titulo (Español)", max_length=50)
url_en = models.URLField("url (English)")
url_es = models.URLField("url (Español)")
def __unicode__(self):
return self.title_en
class Meta:
abstract = True
# top (main) menu ---> inherits from MENU
class MainMenu(Menu):
class Meta:
verbose_name_plural = "Menu Items"
# submenu - for drop downs ---> inherits from MENU
class SubMenu(Menu):
main_menu = models.ForeignKey(MainMenu, null=True, blank=True)
class Meta:
verbose_name_plural = "Sub Menu Items"
然后对于菜单我这样做:
menu_items = MainMenu.objects.all().select_related().order_by('position')
这很好,并生成按位置排序的主菜单项。但是,子菜单项没有排序。如何确保子菜单项也按位置排序?