2014-07-23 137 views
0

我试图运行使用下面的窗体的网页应用程序页面;__init __()得到了一个意外的关键字参数'widget'

class InputParametersForm(ModelForm): 

    sqlConnection = SQLSeverConnection(
     'MSSQLServerDataSource', 
     'default_user', 
     'password123!!', 
     'HD' 
    ) 
    tableChoices = sqlConnection.getTableNames() 
    TableName = forms.Select(
     widget=forms.Select(attrs={'class': 'selector'}) 
    ) 
    ColumnName = forms.Select(
     widget=forms.Select(attrs={'class': 'selector'}) 
    ) 
    StartDateTime = forms.DateField(
     widget=SelectDateWidget(
      empty_label=("Choose Year", "Choose Month", "Choose Day") 
     ) 
    ) 
    EndDateTime = forms.DateField(
     widget=SelectDateWidget(
      empty_label=("Choose Year", "Choose Month", "Choose Day") 
     ) 
    ) 

    class Meta: 
     model = SelectionHistory 
     fields = ("TableName", "ColumnName", "StartDateTime", "EndDateTime") 

当我运行manage.py runserver,并去当地的URL,我得到一个500页面,在那里我已经尝试使用插件的错误__init__() got an unexpected keyword argument 'widget'

这可能是我正在做的一些基本错误,但如果有人能指出我在正确的方向,这将是一个很大的帮助 - 最好是用一些代码。

回答

0

forms.Select是一个小部件,它不是Field,它没有widget参数。这是错误报告的内容。这是你主要有:

>>> from django import forms 
>>> forms.Select(widget=forms.Select) 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
TypeError: __init__() got an unexpected keyword argument 'widget' 

相反,你的意思是有一个ChoiceFieldSelect部件:

TableName = forms.ChoiceField(widget=forms.Select(attrs={'class': 'selector'})) 

也见丹尼尔的例子在这里:

+0

https://docs.djangoproject.com/en/1.6/ref/forms/widgets/#select – elmonkeylp

1

另一种可能性y当接收到这个错误消息时,Django在处理db模型和表单模型时具有不同类型的字段。确保您的包裹按正确顺序排列;包括模型后的表格。如果你沿着线的东西:

from models import * 
from django.forms import * 

这将迫使表的字段对象被用来代替它确实有widget关键字模型的领域对象。

相关问题