Django - 简单的选择框形式与模板

时间:2012-05-11 09:00:03

标签: django django-forms django-templates

我需要在模板中显示一个简单的选择输入 此输入基于选择的对象,并且应具有选定的值 它不会用于服务器的任何帖子。

staffs = Staff.objects.filter(staff__company=comp)
selected_staff = staffs[0]

staffs是我需要在选择中显示的人

我发现这个输入非常详细,所以我想知道如果不是在模板中手动编写输入,我应该利用一点形式。

所以问题是,我应该手动编写<option>输入还是应该使用内置小部件?

1 个答案:

答案 0 :(得分:1)

使用内置总是更好。您还可以使用Field.initial为字段设置初始值。文件是here

定义一个选项并将其设置在模板上(可能使用javascript)要困难得多。

更新:

class MyStaffForm(forms.Form):
    <your form structure here>
    ...
    <end of your form structure>


def Myview(request):
    ....
    staffs = Staff.objects.filter(staff__company=comp)
    #override form class to add a new form field
    MyStaffForm.base_fields['staff']=forms.ChoiceField(choices=[[(s.id, s) for s in staffs], initial=staff[0].id)

这就是你处理Form Class的方法。但是使用forms.ChoiceField覆盖基类Form类不是一个好选择,因为您使用查询集来定义选项。因此,请使用ModelChoiceField代替

MyStaffForm.base_fields['staff']=forms.ModelChoiceField(queryset=staffs, initial=staff[0])

Django将处理表单的其余验证和初始化......