当将自动填充字段添加到模型窗体时,'list'对象没有属性'queryset'错误 [英] 'list' object has no attribute 'queryset' error when adding a autocomplete field to a model-form
问题描述
但是,一旦我为字段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屋!