2012-05-11 94 views
1

我需要在模板中显示一个简单的选择输入。
此输入基于选择的对象,并应具有选定的值。
它不会用于任何发布到服务器。Django - 简单的选择框形式vs模板

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

staffs是,我需要在选择

我觉得这是输入相当冗长显示,所以我想知道如果,而不是在模板手动编写输入的人,我应该利用一个小表格。

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

+0

答案... – FallenAngel

回答

1

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

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

UPDATE:

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) 

这是你如何处理表单类。但是使用forms.ChoiceField覆盖基本Form类并不是一个好的选择,因为您使用查询集来定义选择。因此,使用更新ModelChoiceField,而不是

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

Django会处理验证和形式的初始化休息...

+0

确定这是一种我在想什么。然而,我不知道如何从我的视图中设置选项,从而得到'staffs' –

+0

第二种解决方案:正是我在寻找的东西。谢谢 –