【问题标题】:'list' object has no attribute 'queryset' error when adding a autocomplete field to a model-form将自动完成字段添加到模型表单时,“列表”对象没有属性“查询集”错误
【发布时间】:2016-10-14 16:59:11
【问题描述】:

我想在我的 model.form 中添加另一个自动完成字段。

但是,只要我为“projektnummer”字段添加自动完成小部件

'projektnummer': autocomplete.ModelSelect2(url='output:projekt-form-autocomplete'),

我收到一个我无法理解的有线模板错误。你有什么想法我可以在这里做什么吗?

非常感谢! :)

错误信息:

AttributeError at /output/create/
'list' object has no attribute 'queryset'
Request Method: GET
Request URL:    http://127.0.0.1:8000/output/create/
Django Version: 1.8.7
Exception Type: AttributeError
Exception Value:    
'list' object has no attribute 'queryset'

Error during template rendering

In template /home/bjoern/Developement/Django/Outputmeldetool/venv_outputmeldetool/lib/python3.5/site-packages/crispy_forms/templates/bootstrap3/field.html, error at line 28

28 {% if field|is_checkbox and form_show_labels %}

forms.py

class KombiPublikationForm(forms.ModelForm):

    typtyp = forms.ModelChoiceField(label='Vorauswahl Outputtyp', required = False,
                                    queryset=KombiPublikationsTypTyp.objects.exclude(id__in=EXCLUDED_TYPTYP)
                                    )

    class Meta:
        model = KombiPublikation
        exclude = ['pub_sprache']
        widgets = {
            'freigabe': DateTimePicker(options={"format": "YYYY-MM-DD HH:mm", 'sideBySide': True}),
            'typid': autocomplete.ModelSelect2(url='output:typ-autocomplete', forward=['typtyp']),
#adding following line generates the error:
            'projektnummer': autocomplete.ModelSelect2(url='output:projekt-form-autocomplete'),
            'monat': forms.NumberInput(),
        }



    def __init__(self, *args, **kwargs):
        super(KombiPublikationForm, self).__init__(*args, **kwargs)

        self.helper = FormHelper()
        self.helper.help_text_inline = True
        self.helper.form_tag = False
        self.helper.layout = Layout(
           #a lot of layout stuff is here
            )

编辑:

我收到了同样的错误消息,但测试表减少了,但没有松脆的表。只是简单的模型形式和一个自动完成小部件。所以它似乎与清晰的表单无关,但与自动完成小部件有关。

class TestPublikationForm(forms.ModelForm):
    class Meta:
        model = KombiPublikation
        exclude = ['pub_sprache']
        widgets = {
            'projektnummer': autocomplete.ModelSelect2(url='output:projekt-form-autocomplete'),
    }

模板.html

{{ form }}

错误:

 Exception Value: 'list' object has no attribute 'queryset'

【问题讨论】:

  • 你能粘贴完整的回溯吗?
  • 当然——我把它作为一个额外的答案发布,因为它太长了。谢谢你的调查! :)

标签: django django-forms jquery-select2 django-crispy-forms django-autocomplete-light


【解决方案1】:

您尚未发布您的模型,但我猜测问题可能在于您尝试自动完成的字段不是 ForeignKey 或 ManyToMany 字段,而是 CharField 或 IntegerField 之类的字段。

如果你想这样使用它,你可以按照 Alex 的建议去做。否则你需要改变你的模型。

【讨论】:

    【解决方案2】:

    我在申请 django-taggit 时遇到了同样的问题。我将表单的小部件更改为 ListSelect2 或 TagSelect2。然后它就起作用了。

    class TestPublikationForm(forms.ModelForm):
    class Meta:
        model = KombiPublikation
        exclude = ['pub_sprache']
        widgets = {
            'projektnummer': autocomplete.ListSelect2(url='output:projekt-form-autocomplete'),
    }
    

    您可以从“Select2 小部件实现模块”中找到更多资源。 : http://django-autocomplete-light.readthedocs.io/en/master/api.html#module-dal.widgets

    【讨论】:

      猜你喜欢
      • 2018-02-14
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      相关资源
      最近更新 更多