gpt4 book ai didi

python - 如何更改 Django 表单集中 DELETE 字段的小部件类型

转载 作者:太空狗 更新时间:2023-10-29 21:12:38 25 4
gpt4 key购买 nike

我正在使用 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。

最佳答案

完成您需要的最短代码是:

class MyFormSet(BaseFormSet):
def add_fields(self, form, index):
super(MyFormSet, self).add_fields(form, index)
form.fields[DELETION_FIELD_NAME].widget = forms.HiddenInput()

它不能被认为是 hack,因为它在官方 Django 文档中提到:

https://docs.djangoproject.com/en/1.4/topics/forms/formsets/#adding-additional-fields-to-a-formset

要阅读的 Django 资源:

关于python - 如何更改 Django 表单集中 DELETE 字段的小部件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9379512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com