首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Formset初始选择字段

Formset初始选择字段
EN

Stack Overflow用户
提问于 2016-12-19 19:34:50
回答 1查看 1.6K关注 0票数 1

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

这是原始表格:

代码语言:javascript
复制
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)

此表单ChoiceFields是从我在视图中创建的各种参数列表中填充的:

代码语言:javascript
复制
form = PO_Form(baseItem_choices, color_choices, material_choices, sizeGroup_choices)

我是如何用一套表格来完成这个任务的?我尝试了两种方法: 1:

代码语言:javascript
复制
PO_FormSet = formset_factory(PO_Form(baseItem_choices, color_choices, material_choices, sizeGroup_choices), extra=2)

我知道这个错误:

在内部39中文件"/Library/Python/2.7/site-packages/django/core/handlers/exception.py“。响应=get_response(请求) "/Library/Python/2.7/site-packages/django/core/handlers/base.py“文件在_get_response 187中。响应= self.process_exception_by_middleware(e,请求) "/Library/Python/2.7/site-packages/django/core/handlers/base.py“文件在_get_response 185中。response =wrapped_callback(请求、*callback_args、**callback_kwargs) 在(Personal)/django/projectos/WholeSale/ShowRoom/views.py“115中文件"/Users/carlospceballos/Dropbox (Personal)/django/projectos/WholeSale/ShowRoom/views.py”“。PO_FormSet = formset_factory(PO_Form(baseItem_choices,color_choices,material_choices,sizeGroup_choices),extra=2) 文件"/Library/Python/2.7/site-packages/django/forms/formsets.py“在formset_factory 449中。返回type(form.name + str('FormSet'),(格式化集,) 异常类型: AttributeError at /showroom/po_populate/3/ Exception值:'PO_Form‘对象没有属性'name

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

代码语言:javascript
复制
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_Form,就会产生一个错误,该表单包含5个参数,而我只传递1。如果我修改该表单(去掉init),我不会得到任何错误,但是选择字段是空的。我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-19 20:25:55

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

forms.py:

代码语言:javascript
复制
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)

views.py:

代码语言:javascript
复制
PO_FormSet = formset_factory(PO_Form)

formset = PO_FormSet()

for form in formset.forms:
    form.fields['base_item'].choices = baseItem_choices
    form.fields['color_or_print'].choices = color_choices
    form.fields['material'].choices = material_choices
    form.fields['size_group'].choices = sizeGroup_choices
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41229753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档