当将自动填充字段添加到模型窗体时,'list'对象没有属性'queryset'错误 [英] 'list' object has no attribute 'queryset' error when adding a autocomplete field to a model-form

查看:543
本文介绍了当将自动填充字段添加到模型窗体时,'list'对象没有属性'queryset'错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



但是,一旦我为字段projektnummer添加了自动完成的小部件, p>

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

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



非常感谢! :

错误信息:

  / output / create中的AttributeError / 
'list'对象没有属性'queryset'
请求方法:GET
请求URL:http://127.0.0.1:8000/output/create/
Django版本:1.8.7
异常类型:AttributeError
异常值:
'list'对象没有属性'queryset'

模板渲染时出错

在模板/home/bjoern/Developement/Django/Outputmeldetool/venv_outputmeldetool/lib/python3.5/site-packages/crispy_forms/templates/bootstrap3/field.html中,错误在第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以下行会生成错误:
'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 =布局(
#a很多布局的东西在这里

编辑:



我得到非常相同的错误消息与减少的测试形式没有酥脆的形式。只是简单的模型形式和一个自动完成的小部件。所以似乎没有发现脆弱的形式,但与自动完成小部件相关。

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

template.html

  {{form}} 

错误:

 异常值:'list'对象没有属性'queryset'


解决方案

在应用于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


I want to add an another autocomplete field to my model.form.

However, as soon as I add the autocomplete widget for the field "projektnummer"

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

I get an wired template error I cannot make sense of. Do you have some ideas what I can do here?

Thank you very much! :)

error message:

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
            )

edit:

I get the very same error message with a reduced test form without crispy forms. Just the plain model-form and the one autocomplete widget. So it seems to be unreleated to crispy forms, but related to the autocomplete widget.

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

template.html

{{ form }}

error:

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

解决方案

I had same issue when applying to django-taggit. I changed form's widgets to ListSelect2 or TagSelect2. And then it works.

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

You can find more resources from 'Select2 widget implementation module.' : http://django-autocomplete-light.readthedocs.io/en/master/api.html#module-dal.widgets

这篇关于当将自动填充字段添加到模型窗体时,'list'对象没有属性'queryset'错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆