django-autocomplete-light错误='列表'对象没有属性'queryset' [英] django-autocomplete-light error = 'list' object has no attribute 'queryset'

查看:118
本文介绍了django-autocomplete-light错误='列表'对象没有属性'queryset'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是django的新手,我需要您的帮助,经过很多天试图了解django-autocomplete-light,在设置测试后, http://192.168.0.108:8000/country-autocomplete/工作,显示数据像在这里说明 http://django-autocomplete-light.readthedocs .io/en/master/tutorial.html#overview

i am new on django and i need your help, trying since many days to understand django-autocomplete-light, after setup my test, http://192.168.0.108:8000/country-autocomplete/ work, data is showed like explaned here http://django-autocomplete-light.readthedocs.io/en/master/tutorial.html#overview

但是在执行下一步之后,我收到了错误消息:

But after following next step, i am getting error:

AttributeError at /auto
'list' object has no attribute 'queryset'
Request Method: GET
Request URL:    http://192.168.0.108:8000/auto
Django Version: 1.10.3
Exception Type: AttributeError
Exception Value:'list' object has no attribute 'queryset'
Exception Location: /home/alcall/ENV/lib/python3.4/site-packages/dal/widgets.py in filter_choices_to_render, line 161

在我的设置下面:

网址:

from dal import autocomplete
from django.conf.urls import url
from django.contrib import admin
from rates.view.index import *
from rates.view.index import UpdateView

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(
    r'^country-autocomplete/$',
    CountryAutocomplete.as_view(),
    name='country-autocomplete',
),
url(r'^auto$',
    UpdateView.as_view(),
    name='select',
),
]

models.py

models.py

from __future__ import unicode_literals
from django.db import models

class Country(models.Model):
    enabled = models.IntegerField()
    code3l = models.CharField(unique=True, max_length=3)
    code2l = models.CharField(unique=True, max_length=2)
    name = models.CharField(unique=True, max_length=64)
    name_official = models.CharField(max_length=128, blank=True, null=True)
    prix = models.FloatField()
    flag_32 = models.CharField(max_length=255, blank=True, null=True)
    flag_128 = models.CharField(max_length=255, blank=True, null=True)
    latitude = models.DecimalField(max_digits=10, decimal_places=8,     blank=True,$
    longitude = models.DecimalField(max_digits=11, decimal_places=8, blank=True$
    zoom = models.IntegerField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'country'

    def __str__(self):
        return self.name

视图(也包括表格)

from dal import autocomplete
from django.shortcuts import render
from rates.models import Country
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.http import HttpResponse
from django import forms
from django.core.urlresolvers import reverse_lazy
from django.views import generic

class CountryAutocomplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):
        # Don't forget to filter out results depending on the visitor !
       # if not self.request.user.is_authenticated():
        #    return Country.objects.none()

        qs = Country.objects.all()

        if self.q:
            qs = qs.filter(name__istartswith=self.q)

        return qs

class Form_country(forms.ModelForm):
    class Meta:
       model = Country
       fields = ('name', 'code2l')
       widgets = {
          'name': autocomplete.ModelSelect2Multiple(
            'country-autocomplete'
           )
       }

class UpdateView(generic.UpdateView):
    model = Country
    form_class = Form_country
    template_name = 'fr/public/monformulaire.html'
    success_url = reverse_lazy('select')


    def get_object(self):
        return Country.objects.first() 

推荐答案

我遇到了同样的问题.这里的问题是小部件.试图将其修复很长时间.对我有用的唯一方法是更改​​表单的小部件.

I had the same issue. The problem here is with the widget. Tried to fix it for very long. The only way in worked for me was changing form's widget.

如果没关系,您可以改用autocomplete.ListSelect2,它对我有用.

If it doesn't matter that much you can use autocomplete.ListSelect2 instead, it worked for me.

所以尝试一下:

class Form_country(forms.ModelForm):
    class Meta:
       model = Country
       fields = ('name', 'code2l')
       widgets = {
          'name': autocomplete.ListSelect2(
            'country-autocomplete'
           )
       }

实际上,您可以尝试使用其他任何自动填充小部件,并查看其是否有效

Actually you can just try any other autocomplete widget and see weather it works

这篇关于django-autocomplete-light错误='列表'对象没有属性'queryset'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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