如何在Django中将手动订购添加到多个不同的模型?

时间:2019-07-16 15:26:46

标签: python django django-models model

在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属性,但是,当项目或部分从菜单的一部分拖到另一部分时,我觉得这将成为编辑对象的噩梦,并且需要以正确的顺序组合整个菜单时,会有更多的后端代码。最简单/最可靠的方法是什么?

0 个答案:

没有答案