我正试图以我的酥脆形式制作我的一些田地.我原以为这会很简单,但它不起作用.没有错误,只是没有读取.
class ApplicationForm(BaseItemForm): jira_bucket = forms.CharField( widget=autocomplete_light.ChoiceWidget('JiraAutocomplete')) def __init__(self, *args, **kwargs): ''' Change form based on permissions of the user ''' super(ApplicationForm, self).__init__(*args, **kwargs) # app = self.instance if not self.user.has_perm('Assets.sarbox_fields'): disabled_widget = forms.CheckboxInput(attrs={'readonly': True}) self.fields['sarbox'].widget = disabled_widget self.fields['pii'].widget = disabled_widget self.fields['pci'].widget = disabled_widget if 'sarbox_approver' in self.fields: self.fields['sarbox_approver'].widget.attrs['disabled'] = True # it's about to get crispy self.helper = FormHelper() # self.helper.form_class = 'application-form' # done in template self.helper.form_tag = False self.helper.disable_csrf = True self.helper.layout = Layout( Div( Field('name'), Field('jira_bucket'), ), Row(Field('primary_tech', wrapper_class='col-md-6'), Field('primary_biz', wrapper_class='col-md-6') ), Row(Field('backup_tech', wrapper_class='col-md-6'), Field('backup_biz', wrapper_class='col-md-6'), ), Field('desc', rows=2), Div( Field('sarbox'), Field('pci'), Field('pii'), css_class='form-inline', ), Row( Field('sarbox_tech_approvers', wrapper_class='col-md-6'), Field('sarbox_biz_approvers', wrapper_class='col-md-6'), css_id='sarbox_approver' ), ) def clean(self): cleaned_data = self.cleaned_data sarbox = cleaned_data.get('sarbox') if sarbox: if not (cleaned_data['sarbox_tech_approvers'] and cleaned_data['sarbox_biz_approvers']): raise forms.ValidationError("Sarbox applications must have Sarbox Tech and Business approvers assigned.") return cleaned_data
thumbtackthi.. 6
制作禁用/只读小部件: disabled_widget = forms.CheckboxInput(attrs={'disabled': True})
制作禁用/只读小部件: disabled_widget = forms.CheckboxInput(attrs={'disabled': True})
我必须在Layout中设置readonly
参数True
,如下所示:
class ContactForm(forms.Form) email = forms.EmailField(label='Email') api_token = forms.CharField(label='API Token') def __init__(self, *args, **kwargs): super(ContactForm, self.__init__(*args, **kwargs) self.helper = FormHelper() self.helper.layout = Layout( 'email', Field('api_token', readonly=True), )