django在formsets中设置了多个初始值

时间:2014-11-01 07:25:34

标签: django forms formset

我有一张表格:

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)

在形式的'日'字段中,我想要一周的日子,即太阳,星期一......坐着。 另外我想将其设置为用户无法编辑此字段。我准备使用readonly字段,但后来知道djano的readonly字段不适合。

我怎样才能做到这一点。设置初始值并使其不可编辑。

1 个答案:

答案 0 :(得分: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字段中以星期几开始初始化formset表单。