【问题标题】:django: flexible forms for restaurant menu?django:餐厅菜单的灵活形式?
【发布时间】:2012-05-18 10:19:14
【问题描述】:

我正在为餐厅创建一个菜单系统,并且需要能够列出具有灵活属性的菜单项,这些属性有时可以从模型(数据库)中以 django 形式选择。由于没有预先定义项目的数量和属性,因此需要灵活,并且表单需要能够呈现。

示例用例:

1. Hawaiian Pizza
   * unselectable attributes: pineapple, ham (we are assuming you can't change this)
   * selectable attributes (all boolean True/False): spicy, extra cheese, extra meat, extra pineapple
   * prices: large - $9.99, extra large - $14.99 

这将呈现为:

1. Hawaiian Pizza
Pineapple and Ham
[ ] spicy  [ ] extra cheese  [ ] extra meat  [ ] extra ham

$9.99 { button } 
$14.99 { button }

这让我可以下订单

a) 夏威夷披萨,加上额外的奶酪,额外的肉,让它变得辣!超大号,14.99 美元

b) 夏威夷披萨使其变得辛辣。大,9.99 美元

在理想情况下,我什至会为“额外属性”加价。

有人知道如何获得灵活的属性吗? ...或有关如何实现此目标的建议?

这似乎是 Drupal 的理想选择,它具有灵活的属性系统。

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    我想您可以使用其他模型将选项与项目联系起来,例如:

    class Option(models.Model): 
        name = models.CharField(...) # group name for radios, option name for checks
        required = models.BooleanField() # is radio?
    
    class ItemOptions(models.Model):
        item = models.ForeignKey(Item)
        option = models.ForeignKey(Option)
        value = models.CharField(...) # option value
        price = models.DecimalField() # if applied
    

    然后您只需要为每个可选字段显示一个复选框,然后为每个必需的字段显示一个单选按钮(在几个单选框中使用相同的 name 来表示一个选项)。然后将所有订单数据放在PickleFieldJSONField 中,或者只是添加另一个模型来存储这些关系。

    【讨论】:

      猜你喜欢
      • 2011-09-21
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多