0

我正在为餐厅创建一个菜单系统,并且需要能够列出具有灵活属性的菜单项,这些属性有时可以从模型(数据库)中以 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 的理想选择,因为它具有灵活的属性系统。

4

1 回答 1

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添加另一个模型来存储这些关系。

于 2012-05-10T07:09:17.723 回答