首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提交ChoiceField表单Django

提交ChoiceField表单Django
EN

Stack Overflow用户
提问于 2016-07-18 16:58:01
回答 0查看 695关注 0票数 0

我正在处理如何在Django中创建自定义表单,现在我被困在提交步骤中。

当我按下submit时,我会得到一个__init__() got multiple values for keyword argument 'networkList'

我的forms.py是:

代码语言:javascript
复制
class SimpleDeploy(forms.Form):
    def __init__(self, networkList, policiesList, applicationList, *args, **kwargs):
        super(SimpleDeploy, self).__init__(*args, **kwargs)
        if networkList and policiesList and applicationList:
            self.fields['Network Partition ID:'] = forms.ChoiceField(choices=networkList)
            self.fields['Application Policy ID:'] = forms.ChoiceField(choices=policiesList)
            self.fields['Application ID:'] = forms.ChoiceField(choices=applicationList)
        else:
            self.fields['Network Partition ID:'] = forms.ChoiceField(choices='No network partitions found')
            self.fields['Application Policy ID'] = forms.ChoiceField(choices='No application policies found')
            self.fields['Application ID:'] = forms.ChoiceField(choices='No applications found')

在我的views.py上,该方法如下所示:

代码语言:javascript
复制
def simpleDeploy(request):
    netList = getDetailsNetworkPartitions(request)
    polList = getDetailsApplicationPolicies(request)
    appList = getDetailsApplications(request)
    if request.method == 'POST':
        form = SimpleDeploy(request.POST, networkList=None, policiesList=None, applicationList=None)
        if form.is_valid():
            network = form.cleaned_data['Network Partition ID:']
            policy = form.cleaned_data['Application Policy ID:']
            application = form.cleaned_data['Application ID:']
            ##### more things
        else:
            simpleForm = SimpleDeploy(networkList=netList, policiesList=polList, applicationList=appList)
    else:
        simpleForm = SimpleDeploy(networkList=netList, policiesList=polList, applicationList=appList)
    return render(request, 'apacheStratos/simpleDeploy.html', {'form': simpleForm})

回溯错误:

代码语言:javascript
复制
Traceback:
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.12-py2.7.egg/django/core/handlers/base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/iago/Escritorio/tfm/website/apacheStratos/views.py" in simpleDeploy
  60.         form = SimpleDeploy(request.POST, networkList=None, policiesList=None, applicationList=None)

Exception Type: TypeError at /stratos/simpleDeploy
Exception Value: __init__() got multiple values for keyword argument 'networkList'

查看文档时,我看到POST请求总是第一个参数(request.Post),在init方法上,我认为它与self相对应,而且在这里的其他答案中,我看到有时,将data=params放入可以工作,但在我的示例中,我得到了一个错误:if form.is_valid():行上的need more than 1 value to unpack

回溯:

代码语言:javascript
复制
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.12-py2.7.egg/django/core/handlers/base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/iago/Escritorio/tfm/website/apacheStratos/views.py" in simpleDeploy
  61.         if form.is_valid():
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.12-py2.7.egg/django/forms/forms.py" in is_valid
  184.         return self.is_bound and not self.errors
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.12-py2.7.egg/django/forms/forms.py" in errors
  176.             self.full_clean()
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.12-py2.7.egg/django/forms/forms.py" in full_clean
  392.         self._clean_fields()
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.12-py2.7.egg/django/forms/forms.py" in _clean_fields
  407.                     value = field.clean(value)
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.12-py2.7.egg/django/forms/fields.py" in clean
  163.         self.validate(value)
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.12-py2.7.egg/django/forms/fields.py" in validate
  868.         if value and not self.valid_value(value):
File "/usr/local/lib/python2.7/dist-packages/Django-1.8.12-py2.7.egg/django/forms/fields.py" in valid_value
  878.         for k, v in self.choices:

Exception Type: ValueError at /stratos/simpleDeploy
Exception Value: need more than 1 value to unpack

那么,哪里是我的错呢?谢谢并致以问候。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38432468

复制
相关文章

相似问题

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