2

請查看我的代碼最後的編輯。Django自動完成燈光列表對象沒有屬性查詢集

我試圖爲單個字段實現django-autocomplete-light(dal 3.2.10)。在教程之後,我發現這個錯誤:'list'對象沒有屬性'queryset'。

我看到這個問題:django-autocomplete-light error = 'list' object has no attribute 'queryset'。它沒有解決我的問題。

爲什麼會發生此錯誤?我能做些什麼來解決這個問題?

我不認爲這是整個問題,但我沒有看到在瀏覽器檢查器中顯示任何js文件。我認爲在編輯#3中包含代碼會導致出現問題。

我有兩個型號:

class Entity(models.Model): 
    entity = models.CharField(primary_key=True, max_length=12) 
    entityDescription = models.CharField(max_length=200) 
    def __str__(self): 
     return self.entityDescription 

class Action(models.Model): 
    entity = models.ForeignKey(Entity, on_delete=models.CASCADE, db_column='entity') 
    entityDescription = models.CharField(max_length=200) 
    action = models.CharField(max_length=50) 
    def __str__(self): 
     return '%s' % self.entity 

我有一個模型的形式和表單集。我也使用脆皮形式來呈現表單集:

class ActionForm(ModelForm): 
class Meta: 
    model = Action 
    fields = '__all__' 
    widgets = { 
     'entityDescription': autocomplete.ModelSelect2(url='eda') 
    } 

ActionFormSet = modelformset_factory(Action, extra=1, exclude=(), form=ActionForm) 

我有一個觀點:

class EntityDescriptionAutocomplete(autocomplete.Select2QuerySetView): 
def get_queryset(self): 
    qs = Entity.objects.all() 
    if self.q: 
     qs = qs.filter(entityDescription__istartswith=self.q) 
    return qs 

我有一個urls.py:

urlpatterns = [ 
    url(
     r'^eda/$', 
     views.EntityDescriptionAutocomplete.as_view(), 
     name='eda', 
    ), 
] 

謝謝你的任何見解你可能都有。

編輯:

我改......

widgets = { 
     'entityDescription': autocomplete.ModelSelect2(url='eda'), 
} 

...到...

widgets = { 
     'entityDescription': autocomplete.Select2(url='eda'), 
} 

......這讓我的網頁渲染,但自動填充字段是一個空的下拉菜單。爲什麼它是空的,爲什麼它不是一個自動完成框?

編輯#2:

我刪除在元類的小部件設置,而是直接推翻領域:

class ActionForm(ModelForm): 
    entityDescription = ModelChoiceField(
     queryset=Entity.objects.all(), 
     widget=autocomplete.ModelSelect2(url='eda') 
     ) 
    class Meta: 
     model = Action 
     fields = '__all__' 

這仍然會返回一個空的下拉列表(不是自動完成框)但它現在有Django的-------能指,而不是絕對沒有。

編輯#3:

我將此添加到我的模板:

{% block footer %} 
<script type="text/javascript" src="/static/collected/admin/js/vendor/jquery/jquery.js"></script> 
{{ form.media }} 
{% endblock %} 

沒有改變。

回答

2

你的ActionFormEntityDescriptionAutocomplete看起來不錯。

您的自動完成視圖是否返回結果?

您應該能夠瀏覽到自動填充視圖的URL(在您的案例中爲/eda)並查看查詢中的JSON結果。該集是不是空的?

{"pagination": {"more": true}, "results": [{"text": "foo", "id": "1" ... 
              ^^^^^^^^^^^^^^^^^^^^^^^^ 

您的呈現的HTML是否包含庫?

你應該看到在你的HTML源代碼如下,在那裏你把{{ form.media }}標籤:

<link href="/static/autocomplete_light/vendor/select2/dist/css/select2.css" type="text/css" media="all" rel="stylesheet" /> 
<link href="/static/autocomplete_light/select2.css" type="text/css" media="all" rel="stylesheet" /> 
<script type="text/javascript" src="/static/autocomplete_light/jquery.init.js"></script> 
<script type="text/javascript" src="/static/autocomplete_light/autocomplete.init.js"></script> 
<script type="text/javascript" src="/static/autocomplete_light/vendor/select2/dist/js/select2.full.js"></script> 
<script type="text/javascript" src="/static/autocomplete_light/select2.js"></script> 

如果沒有,

你指的是正確的表格變量?

form in {{ form.media }}應引用您在上下文中傳遞給您的頁面模板的任何名稱。

+1

最後一塊做了竅門 –

+0

我真的覺得這從autocomplete-light-docs中是缺少的...... – user1544500

相關問題