gpt4 book ai didi

具有非必填字段的 Django MultiValueField

转载 作者:行者123 更新时间:2023-12-05 06:38:32 27 4
gpt4 key购买 nike

我正在尝试制作一个不需要最后一个字段的 MultiValueField。

根据文档,如果我将 require_all_fields 设置为 False,那么我可以将一些字段设置为不需要,如下所示:-

class MyMultiWidget(widgets.MultiWidget):
def __init__(self, attrs=None):
_widgets = (
widgets.TextInput(attrs=attrs),
widgets.TextInput(attrs=attrs),
widgets.TextInput(attrs=attrs),
widgets.TextInput(attrs=attrs),
)
super(MyMultiWidget, self).__init__(_widgets, attrs)

def decompress(self, value):
return [None, None, None, None]


class MyMultiValueField(forms.MultiValueField):
widget = MyMultiWidget

def __init__(self, *args, **kwargs):
fields = (
forms.CharField(),
forms.CharField(),
forms.CharField(),
forms.CharField(required=False))
super(MyMultiValueField, self).__init__(
require_all_fields=False, fields=fields, *args, **kwargs)

def compress(self, data_list):
return data_list

但是这生成的 HTML 看起来像这样:-

<input name="field_0" required="" class="textinput textInput form-control" id="id_field_0" autocomplete="off" type="text">
<input name="field_1" required="" class="textinput textInput form-control" id="id_field_1" type="text">
<input name="field_2" required="" class="textinput textInput form-control" id="id_field_2" type="text">
<input name="field_3" required="" class="textinput textInput form-control" id="id_field_3" type="text">

如您所见,所有字段都是必需的。知道我在这里做错了什么吗?

最佳答案

我看到这是一个老问题,但我今天遇到它并发现解决方案是将 required=False 添加到 MyMultiValueField.__init__ 的 super 调用中这样它就变成了:

super(MyMultiValueField, self).__init__(
required=False, require_all_fields=False, fields=fields, *args, **kwargs)

关于具有非必填字段的 Django MultiValueField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45878225/

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