我需要在模板中显示一个简单的选择输入 此输入基于选择的对象,并且应具有选定的值 它不会用于服务器的任何帖子。
staffs = Staff.objects.filter(staff__company=comp)
selected_staff = staffs[0]
staffs
是我需要在选择中显示的人
我发现这个输入非常详细,所以我想知道如果不是在模板中手动编写输入,我应该利用一点形式。
所以问题是,我应该手动编写<option>
输入还是应该使用内置小部件?
答案 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将处理表单的其余验证和初始化......