【问题标题】:__init__() got an unexpected keyword argument 'widget'__init__() 有一个意外的关键字参数“小部件”
【发布时间】:2014-09-14 22:34:04
【问题描述】:

我正在尝试运行使用以下表单的网页应用程序页面;

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' 我尝试使用该小部件。

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

【问题讨论】:

    标签: django typeerror django-forms django-widget


    【解决方案1】:

    收到此错误消息的另一种可能是 Django 在处理 db 模型和表单模型时具有不同类型的字段。确保您的包含顺序正确;包括模型之后的表格。如果您按照以下方式进行操作:

    from models import *
    from django.forms import *
    

    这将强制使用表单的字段对象,而不是模型的字段对象,后者确实具有widget 关键字。

    【讨论】:

      【解决方案2】:

      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'}))
      

      也可以在这里查看丹尼尔的例子:

      【讨论】:

        猜你喜欢
        • 2021-09-20
        • 2017-02-21
        • 2018-04-26
        • 1970-01-01
        • 2019-01-05
        • 2021-10-29
        • 2015-01-27
        • 2016-08-25
        • 1970-01-01
        相关资源
        最近更新 更多