在django中,我试图构建一个菜单应用程序,该应用程序将允许用户构建和编辑餐厅菜单,然后将其显示给用户。菜单具有“小节”,“小节”和菜单项,用户应可以按自己想要的任何顺序放置菜单,并将该顺序显示给用户。例如,菜单可能看起来像:
Appetizers
Calamari
Soup
Entrees
Sandwiches
Hamburger
Cuban
Steaks
Ribeye
以下是我为此使用的模型:
class Section(models.Model):
title = models.CharField(max_length=50)
parent_section = models.ForeignKey(
'Section',
on_delete=models.CASCADE,
blank=True,
null=True
)
menu = models.ForeignKey(
'Menu',
on_delete=models.CASCADE
)
def __str__(self):
return self.title
class MenuItem(models.Model):
name = models.CharField(max_length=50)
description = models.TextField()
menu = models.ForeignKey(
'Menu',
on_delete=models.CASCADE
)
section = models.ForeignKey(
'Section',
on_delete=models.CASCADE,
null=True,
blank=True
)
def __str__(self):
return self.name
我对解决此问题的最佳方法感到困惑。我曾考虑过要向所有Section和MenuItem模型都添加一个order_number属性,但是,当项目或部分从菜单的一部分拖到另一部分时,我觉得这将成为编辑对象的噩梦,并且需要以正确的顺序组合整个菜单时,会有更多的后端代码。最简单/最可靠的方法是什么?