Объект «список» не имеет атрибута «queryset» ошибка при добавлении поля автозаполнения в форму модели

Я хочу добавить еще одно поле автозаполнения в мою модель.форму.

Однако, как только я добавляю виджет автозаполнения для поля «номер проекта»,

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

формы.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'

comment
Можете ли вы вставить полную трассировку?   -  person jpic    schedule 19.10.2016
comment
конечно - я разместил это как дополнительный ответ, так как он слишком длинный. спасибо, что заглянули! :)   -  person teconomix    schedule 20.10.2016


Ответы (2)


Вы не опубликовали свои модели, но я предполагаю, что проблема может заключаться в том, что поле, которое вы пытаетесь автозаполнить, не является полем ForeignKey или ManyToMany, а чем-то вроде CharField или IntegerField.

Если вы хотите использовать его таким образом, вы можете сделать то, что предложил Алекс. В противном случае вам нужно изменить свои модели.

person yam    schedule 14.03.2018

У меня была такая же проблема при подаче заявки на 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

person Alex Jin Choi    schedule 27.12.2016