表单集初始选择字段

2024-09-28 01:25:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个表单(工作正常)要传递给表单集,但我传递给ChoiceFields的元组没有呈现或有错误:

这是原始表格:

class PO_Form(forms.Form):
    def __init__(self, baseItem_choices, color_choices, material_choices, sizeGroup_choices, *args, **kwargs):
        super(PO_Form, self).__init__(*args, **kwargs)
        self.fields['base_item'].choices = baseItem_choices
        self.fields['color_or_print'].choices = color_choices
        self.fields['material'].choices = material_choices
        self.fields['size_group'].choices = sizeGroup_choices

    base_item = forms.ChoiceField(choices=(), required=True)
    color_or_print = forms.ChoiceField(choices=(), required=True)
    material = forms.ChoiceField(choices=(), required=True)
    size_group = forms.ChoiceField(choices=(), required=True)

此表单选项字段由我在视图中创建的各种touple列表填充:

^{pr2}$

我如何在表单集中实现这一点?我尝试了两种方法: 1号文件:

PO_FormSet = formset_factory(PO_Form(baseItem_choices, color_choices, material_choices, sizeGroup_choices), extra=2)

我得到这个错误:

File "/Library/Python/2.7/site-packages/django/core/handlers/exception.py" in inner 39. response = get_response(request)

File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in _get_response 187. response = self.process_exception_by_middleware(e, request)

File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in _get_response 185. response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/Users/carlospceballos/Dropbox (Personal)/django/projectos/WholeSale/ShowRoom/views.py" in PO_formset_populate 115. PO_FormSet = formset_factory(PO_Form(baseItem_choices, color_choices, material_choices, sizeGroup_choices), extra=2)

File "/Library/Python/2.7/site-packages/django/forms/formsets.py" in formset_factory 449. return type(form.name + str('FormSet'), (formset,), attrs)

Exception Type: AttributeError at /showroom/po_populate/3/ Exception Value: 'PO_Form' object has no attribute 'name'

2:我尝试在视图中设置初始值:

PO_FormSet = formset_factory(PO_Form(), extra=2)
formset = PO_FormSet(initial=[
    {   'base_item': baseItem_choices,
        'color_or_print': color_choices,
        'material': material_choices,
        'size_group': sizeGroup_choices, }
])

如果我不修改PO_uform,就会出现一个错误,说表单接受5个参数,而我只传递1个参数。如果我修改表单(去掉init),我没有错误,但是选项字段是空的。。。我做错什么了?在


Tags: selfform表单baseresponseformspofile
1条回答
网友
1楼 · 发布于 2024-09-28 01:25:07

您正在将form的实例而不是form类传递给formset_factory方法。您可以在实例化表单集之后设置选项。在

在表单.py公司名称:

class PO_Form(forms.Form):
    base_item = forms.ChoiceField(choices=(), required=True)
    color_or_print = forms.ChoiceField(choices=(), required=True)
    material = forms.ChoiceField(choices=(), required=True)
    size_group = forms.ChoiceField(choices=(), required=True)

在视图.py公司名称:

^{pr2}$

相关问题 更多 >

    热门问题