如何通过模型在Django中建立分组?

时间:2017-07-08 20:15:57

标签: python django

我创建了一个名为MenuItems的模型,它允许我输入餐馆菜单上的所有项目,稍后我将在前端使用这些项目。我还创建了一个模型名称MenuGrouping,以便在前端,我可以让Bootstrap选项卡显示group_title,并在每个选项卡下显示该组中的项目。我应该在MenuItems模型中添加哪个字段才能将其与组相关联?我试图使用group = models.ForeignKey(MenuGrouping),但后来我遇到了显示特定组中每个项目的问题。

Models.py:

class MenuItems(models.Model):

  menu_item_title = models.CharField(max_length=256)
  menu_item_description = models.TextField()
  menu_item_price = models.DecimalField(max_digits=4, decimal_places=2)

  customer_favorite = models.BooleanField(default=False)
  is_on_menu = models.BooleanField(default=True)

class Meta:
    ordering = ('menu_item_title', )


class MenuGrouping(models.Model):
    group_title = models.CharField(max_length=256)

我可以在MenuGrouping模型中添加一个可以关联多个MenuItem的关系吗?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

如果我理解你正确的想要制作像饮料,食物,沙漠等的团体......那么这就是:

每个项目只能在一个组中(我的意思是苏打水是一种饮料,它也不能是食物等)。所以你需要做的是在 MenuItems 模型中添加一个字段。

你的 MenuItems 应该是这样的:

{% for group in groups %)

    # add your tabs or just print the group name. or how ever you want.

    Group {{ group.group_title }}:

    # and now you can list the items in this group here

    {% for item in group.menuitems_set.all %}
        Title is: {{ item.menu_item_title }}
        Price is: {{ item.menu_item_price }}
        ...
    {% endfor %}
{% endfor %}

现在要在模板中使用它,首先获取视图中的组并将它们发送到模板,然后:

obj.Watch

如果您需要将所有项目列在其他地方或其他任何方式,只需将项目发送到模板。

以下是多对一关系文档: Many-to-one relationships

此外,您可以向MenuGrouping添加m2m关系并向每个组添加项目,但是一个项目可以分为多个组,而对于餐馆菜单,我无法看到可能发生的情况。