小编Bla*_*ise的帖子

如何在django formset中更改DELETE字段的窗口小部件类型

我正在使用带有can_delete = True的formset.我想将DELETE字段的小部件更改为隐藏的输入.我似乎无法找到一个好方法来做到这一点.我试过的是:

将表单的窗口小部件更改为HiddenInput和/或在窗体定义中添加隐藏字段:

class MyForm(ModelForm):
    DELETE = forms.BooleanField(widget=forms.HiddenInput)

    class Meta:
        model = MyModel
        widgets = {'DELETE' : forms.HiddenInput}
Run Code Online (Sandbox Code Playgroud)

通过更改formset执行上述操作

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
Run Code Online (Sandbox Code Playgroud)

如果我这样做,它实际上确实将字段更改为隐藏,但这似乎有点像黑客(有效地覆盖了通常的add_fields方法).你怎么这么做的?

==编辑==

事实证明,无论如何,使用隐藏字段对于表单框架来说并不是那么好.你绝对应该使用一个复选框并用css隐藏它.如果你想调整Django中复选框的CSS,我仍然认为你必须改变上面的add_fields方法,然后允许你改变小部件的CSS.

python django

7
推荐指数
2
解决办法
5662
查看次数

标签 统计

django ×1

python ×1