2016-08-14 101 views
0

我有一個django模型'配方'與一個foreignkey字段的模型'成分'。如何將數據屬性添加到django modelform modelchoicefield

在呈現表單時,我得到一個SELECT列表,其ID與匹配成分ID和文本顯示的ID等於字段的字符串表示形式。

但是,我想向選擇列表中添加一個數據屬性,該列表與來自Ingredient查詢集的呈現選項相匹配。

例如,讓我們說這是當前渲染:

<option value="1158">Carrots</option> 
<option value="1159">Strawberry</option> 
<option value="1160">Onion</option> 
<option value="1161">Spinach</option> 

但我想補充一個數據屬性的相關對象:

<option value="1158" data-ingredient-type="vegetable">Carrots</option> 
<option value="1159" data-ingredient-type="fruit">Strawberry</option> 
<option value="1160" data-ingredient-type="vegetable">Onion</option> 
<option value="1161" data-ingredient-type="vegetable">Spinach</option> 

回答

0

爲什麼不render the fields manually
It''ll是這樣

<select> 
    {% for option in form.ingredient.choices %} 
    <option value="{{ option.id }}" data-ingredient-type={{ option.type }}>{{ option.name }}</option> 
    {% endfor %} 
</select> 

或者,也許你的模型類的形式添加的attribute它,但是這必須是一個字符串(或者可能是一個函數)

widgets = { ... 
    'ingredients' = forms.Select(attrs={'data-ingredient-type': 'fruit'}), 
    ...}