dav*_*ave 1 forms django drop-down-menu
我想创建一个表单,在查看时,从数据库中查询用户最喜欢的水果并显示如下:
<select size="4"> 
<option selected>Apples</option>
<option>Bananas</option> 
<option>Oranges</option>
<option>Watermelon</option> 
</select>
使用该表单的视图将:
我正在考虑使用 ChoiceField,但看起来您无法将选项列表动态加载到表单中,至少以一种直接的方式。我最好跳过表单并直接在模板中生成代码吗?或者有没有办法在视图中加载带有用户项的表单的 ChoiceField ?
另外,是否有任何一般的经验法则表明使用 django 表单字段构建表单与在模板中生成表单代码相比更容易?
我在这个堆栈溢出主题中找到了答案。诀窍是覆盖表单__init__(),使其接受一个新的关键字参数,在这种情况下是用户。
views.py 片段
context = RequestContext(request)
user = User.objects.get(username=context['user'])
form = forms.FruitForm(user=user)
forms.py 片段
from django import forms
class FruitForm(forms.Form):
    fruits = forms.ModelChoiceField(queryset=Fruit.objects.all())
    def __init__(self, *args, **kwargs):
        user = kwargs.pop('user', None)
        super(FruitForm, self).__init__(*args, **kwargs)
        if user:
            self.fields['fruits'].queryset = Fruit.objects.filter(user=user)
| 归档时间: | 
 | 
| 查看次数: | 3733 次 | 
| 最近记录: |