2014-11-01 56 views
0

多个初始值我有一个表格:Django的设置表单集

class TimingForm(forms.ModelForm): 
class Meta: 
    model = Timing 
    fields = ('day','mng_start', 'mng_end', 'eve_start', 'eve_end') 

我作出的formset出这种形式。

TimingFormSet = modelformset_factory(Timing, form=TimingForm, extra=7) 

在这里的'日'字段的形式,我想每周的日子,即太阳,星期一...坐。 另外我想将其设置为该用户无法编辑此字段。我即将使用只读字段,但知道djano的readonly字段没有appriciated。

我该如何做到这一点。设置初始值并使其不可编辑。

回答

1

改变你的形式是这样的:

class TimingForm(forms.ModelForm): 
    class Meta: 
     model = Timing 

    def __init__(self, *args, **kwargs): 
     super(TimingForm, self).__init__(*args, **kwargs) 
     self.fields['day'].widget.attrs['readonly'] = True 

    fields = ('day','mng_start', 'mng_end', 'eve_start', 'eve_end') 

与一周中的哪一天,你可以使用这个初始化形式:

day_of_week = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'] 
formset = TimingFormSet() 
for form, day in zip(formsets, day_of_week): 
    form.initial['day'] = day 

day场星期几的初始化现在表单集中的形式。

+0

我认为我的formset将通过这样获得所有表单的相同初始值。我不想那样。就像我说的只读字段不appriciated所以有没有其他方式使其无法使用? – gamer 2014-11-01 08:08:04

+0

@Aeronn检查我的编辑。 – 2014-11-01 08:29:19