2014-07-23 173 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關鍵字模型的領域對象。

相關問題