【发布时间】:2012-03-11 21:05:19
【问题描述】:
我正在使用 can_delete=True 的表单集。我想将 DELETE 字段的小部件更改为隐藏输入。我似乎找不到这样做的好方法。我试过的是:
将表单的小部件更改为 HiddenInput 和/或在表单定义中添加隐藏字段:
class MyForm(ModelForm):
DELETE = forms.BooleanField(widget=forms.HiddenInput)
class Meta:
model = MyModel
widgets = {'DELETE' : forms.HiddenInput}
通过更改表单集执行上述操作
class MyFormSet(BaseModelFormSet):
def add_fields(self, form, index):
originalDeletion = None
if DELETION_FIELD_NAME in form.fields:
originalDeletion = form.fields[DELETION_FIELD_NAME]
super(MyFormSet, self).add_fields(form,index)
if originalDeletion is not None:
form.fields[DELETION_FIELD_NAME] = originalDeletion
如果我同时执行这两项操作,它实际上会将字段更改为隐藏,但这似乎有点像 hack(有效地覆盖了通常的 add_fields 方法)。你应该怎么做?
== 编辑 ==
事实证明,在表单框架中使用隐藏字段并不是那么好。您绝对应该使用复选框并用 css 隐藏它。如果你想在 Django 中调整复选框的 css,我仍然认为你必须像上面那样更改 add_fields 方法,这样你就可以更改小部件的 css。
【问题讨论】:
-
为什么它 必须 是 type=hidden ?其他的隐藏方式不是也很好吗?