我正在制作一个卡路里计数器。用户可以从菜单列表中选择(轻松使用ModelMultipleChoiceField),但他们还需要指定他们拥有的每个Dish
的份数,其中serving_size
是一个字段我的Dish
模特。
基本上,我希望它看起来像这样:
问题是,为了显示字符串“4 oz servings”和“slices”,我需要在呈现字段时访问Dish
模型。
最好的方法是什么?
到目前为止,我有两个粗略的想法:
创建一个自定义Widget
,它将呈现为复选框和数字输入字段。当数据被反序列化时,它变成这样:
{"dish": <Dish model>, "servings": 2.5}
只需使用常规CheckboxSelectMultiple
小部件,但将Dish
模型本身添加到模板的上下文中。这样我可以做这样的事情:
{% for dish in form.fountain_dishes %}
{{dish}}
I ate <input type="number"> {{dish.context.serving_size}}
{% endfor %}
但是,我不确定如何让我的clean
方法处理这些意外数据。