我正在尝试运行使用以下表单的网页应用页面;
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
并转到本地网址时,我收到500页错误__init__() got an unexpected keyword argument 'widget'
我试图使用该小部件。
这可能是我正在犯的一些基本错误,但是如果有人能指出我正确的方向,那将是一个很大的帮助 - 最好有一些代码。
答案 0 :(得分:1)
接收此错误消息的另一种可能性是Django在处理数据库模型和表单模型时具有不同类型的字段。确保您的包含顺序正确;包括表格AFTER模型。如果您按照以下方式执行某些操作:
from models import *
from django.forms import *
这将强制使用Form的字段对象,而不是具有widget
关键字的Model&#39}字段对象。
答案 1 :(得分: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'
相反,您的意思是ChoiceField
包含Select
小部件:
TableName = forms.ChoiceField(widget=forms.Select(attrs={'class': 'selector'}))
另见Daniel的例子: