Я пытаюсь запустить страницу веб-приложения, которая использует приведенную ниже форму;
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
и manage.py runserver
к локальному URL-адресу, я получаю 500-страничную страницу с ошибкой __init__() got an unexpected keyword argument 'widget'
где я пытался использовать виджет.
Это, вероятно, основная ошибка, которую я делаю, но если кто-то может указать мне в правильном направлении, это будет большой помощью – желательно с некоторым кодом.
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
с ChoiceField
Select
:
TableName = forms.ChoiceField(widget=forms.Select(attrs={'class': 'selector'}))
См. Также пример Даниэля:
Другая возможность при получении этого сообщения об ошибке заключается в том, что Django имеет разные типы полей при работе с db-моделями и формами. Убедитесь, что ваши предложения находятся в правильном порядке; включают формы AFTER. Если вы делаете что-то вроде:
from models import *
from django.forms import *
Это заставит объекты поля формы использоваться вместо объектов поля Model, у которых есть ключевое слово widget
.