如何将额外数据添加到ModelMultipleChoiceField?

时间:2017-07-17 00:16:47

标签: django django-forms

我正在制作一个卡路里计数器。用户可以从菜单列表中选择(轻松使用ModelMultipleChoiceField),但他们还需要指定他们拥有的每个Dish的份数,其中serving_size是一个字段我的Dish模特。

基本上,我希望它看起来像这样:

There's a checkbox for each Dish, and underneath each checkbox, there's a number input field for the number of servings you ate.

问题是,为了显示字符串“4 oz servings”和“slices”,我需要在呈现字段时访问Dish模型。

最好的方法是什么?

到目前为止,我有两个粗略的想法:

  1. 创建一个自定义Widget,它将呈现为复选框和数字输入字段。当数据被反序列化时,它变成这样:

    {"dish": <Dish model>, "servings": 2.5}
    
  2. 只需使用常规CheckboxSelectMultiple小部件,但将Dish模型本身添加到模板的上下文中。这样我可以做这样的事情:

    {% for dish in form.fountain_dishes %}
        {{dish}}
        I ate <input type="number"> {{dish.context.serving_size}}
    {% endfor %}
    

    但是,我不确定如何让我的clean方法处理这些意外数据。

0 个答案:

没有答案