【发布时间】:2017-10-08 03:11:13
【问题描述】:
我有一个模型:
class MyModel(models.Model):
normal = models.CharField(null=True, blank=True, max_length=100)
other = models.CharField(null=True, blank=True, max_length=100)
hidden = models.CharField(null=True, blank=True, max_length=100)
如果我在不使用exclude 的情况下定义常规表单,则隐藏字段会在 DOM(和 UI)中的提交按钮之后显示在 UI 上:
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ('normal', 'hidden')
def __init__(self, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
self.helper = FormHelper(form=self)
self.helper.form_class = 'form-horizontal'
self.helper.label_class = 'col-sm-3 col-md-2'
self.helper.field_class = 'col-sm-9 col-md-10'
self.helper.layout = Layout(
'normal',
Hidden('hidden', 'hidden initial'),
FormActions(
Submit('save', 'Save', css_class='save-entry btn-success'),
)
)
现在,如果我翻转并组装一个基本等效的表单,但使用 exclude,隐藏字段不会出现(这是我们想要的)。
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
exclude = ('other',)
def __init__(self, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
self.helper = FormHelper(form=self)
self.helper.form_class = 'form-horizontal'
self.helper.label_class = 'col-sm-3 col-md-2'
self.helper.field_class = 'col-sm-9 col-md-10'
self.helper.layout = Layout(
'normal',
Hidden('hidden', 'hidden initial'),
FormActions(
Submit('save', 'Save', css_class='save-entry btn-success'),
)
)
我无法理解为什么会发生这种情况。
【问题讨论】:
标签: django python-2.7 layout django-crispy-forms