python - django-autocomplete key error -


i installed via pip install django-autocomplete, django autocomplete's documentation said.

then, added code, following documentation given.

i error: keyerror: gestion.clientes

and also, when try import views module gestion app, says attributeerror: 'module' object has no attribute 'autocomplete'

it seems cannot import gestion/views.py, since there's circular import going on... tried attack issue in many ways, i'm stucked...

here's app files

the app called "gestion", i'm running django 1.3 in virtualenv python2.7

gestion/views.py

# -*- encoding: utf-8 -*- django.core.paginator import paginator, pagenotaninteger, emptypage, invalidpage django.shortcuts import render_to_response,render django.contrib import messages django.http import httpresponseredirect, httpresponse django.core.urlresolvers import reverse django.core import serializers import models django.db.models import q django.utils import simplejson autocomplete.views import autocompleteview import forms  autocomplete = autocompleteview('gestion')   def home(request):     return render(request,'index.html')  def facturas(request, cliente=0):         return render(request,'facturas.html')  def cliente_nuevo(request):     form = forms.clientes()     if request.method == 'post':         form = forms.clientes(request.post)         cliente = form.save()         messages.add_message(request,messages.success,'el cliente ha sido creado correctamente')         return httpresponseredirect(reverse('cliente_detalle',args=(cliente.pk,)))     return render(request,'cliente-nuevo.html',{'form':form})  def clientes(request):      #si la petición es de tipo post, devuelve un listado de cientes en json     if request.method == 'post':         if 'q' in request.post:             query_build = q(**{"razon_social__icontains": request.post['s'] })             clientes = models.cliente.objects.filter(query_build)         else:             clientes = models.cliente.objects.all()         data = serializers.serialize('json', clientes)         return httpresponse(data, mimetype='application/json')      params = request.get.copy()      s = none      if 'page' in params:         del(params['page'])      if 's' in params:         query_build = q(**{"razon_social__icontains": params['s'] })         clientes = models.cliente.objects.filter(query_build)         s = params['s']     else:         clientes = models.cliente.objects.all()      paginator = paginator(clientes, 20)#clientes por página      try:         page = int(request.get.get('page', '1'))     except valueerror:         page = 1      clientes = paginator.page(page)      path = params.urlencode()      return render(request,'clientes.html',{'clientes':clientes,'path':path,'s':s})  def cliente_detalle(request, id):     cliente = models.cliente.objects.get(pk = id)     return render(request,'cliente-detalle.html',{'cliente':cliente})  def cliente_editar(request, id):     cliente = models.cliente.objects.get(pk = id)     form = forms.clientes(instance=cliente)     return render(request,'cliente-editar.html',{'form':form, 'cliente':cliente})  def articulo_nuevo(request):     form = forms.articulo()     if request.method == 'post':         form = forms.articulo(request.post)         if form.is_valid():             form.save()             messages.add_message(request,messages.success,'el artículo ha sido creado correctamente')             return httpresponseredirect(reverse('articulos'))     return render(request,'articulo-nuevo.html',{'form':form})  def articulos(request):     params = request.get.copy()     s = none     c = none      if 'page' in params:         del(params['page'])     q = q()     if 's' in params , params['s']:         q.add(q(**{"nombre__icontains": params['s']}), q.and)         q.add(q(**{"referencia__icontains": params['s']}), q.or)         s = params['s']      if 'c' in params , params['c']:         c = params['c']         q.add(q(**{"categoria__contains":c}), q.and)      articulos = models.articulo.objects.filter(q)     sql = articulos.query      articulos = list(articulos.order_by('stock'))        paginator = paginator(articulos, 2)#artículos por página      try:         page = int(request.get.get('page', '1'))     except valueerror:         page = 1      articulos = paginator.page(page)     path = params.urlencode()      return render(request,'articulos.html',{'lista':list(articulos.object_list),'articulos':articulos, 'path':path, 's':s, 'c':c, 'categorias': models.articulo.categorias, 'sql':sql})  def factura_nueva(request):     return render(request,'factura-nueva.html')  def pedidos(request):     return render(request,'pedidos.html')  def nueva_linea_de_pedido(request):     form = forms.linea()     return render(request,'pedido-linea-nueva.html',{'form':form})  def editar_linea_de_pedido(request, linea):     return render(request,'pedido-linea-editar.html') 

gestion/forms.py

# -*- encoding: utf-8 -*-  django import forms import gestion.models models import views import autocomplete.utils utils import autocomplete.widgets widgets  class clientes(forms.modelform):     razon_social = forms.charfield(widget=forms.textinput(attrs={'required':''}),error_messages={'required': 'escriba la razón social'})     numero_de_cliente = forms.charfield(widget=forms.textinput(attrs={'required':''}),required=true,error_messages={'required': 'escriba el número de cliente'})     cuit = forms.charfield(widget=forms.textinput(attrs={'required':''}),error_messages={'required':'escriba el número de cuit/cuil'})     direccion = forms.charfield(widget=forms.textinput(attrs={'required':''}),error_messages={'required':'escriba la dirección'})     condicion_de_iva = forms.choicefield(choices=models.cliente.condiciones_de_iva,error_messages={'required':'seleccione una condición de iva'})     contacto = forms.charfield(required=false)     class meta:         model = models.cliente  class articulo(forms.modelform):     nombre = forms.charfield(widget=forms.textinput(attrs={'required':'','placeholder':'nombre','class':'span4'}))     costo = forms.floatfield(widget=forms.textinput(attrs={'required':'','placeholder':'costo','class':'span4'}),error_messages={'invalid':'el costo debe ser numérico'})     categoria = forms.charfield(widget=forms.select(attrs={'class':'span4'}, choices=models.articulo.categorias))     referencia = forms.charfield(widget=forms.textinput(attrs={'required':'','placeholder':'referencia','class':'span4'}))     stock = forms.integerfield(widget=forms.textinput(attrs={'required':'','placeholder':'stock','class':'span4'}),error_messages={'invalid':'el stock debe ser un número entero'})     class meta:         model = models.articulo  class linea(forms.modelform):     articulo_txt = forms.charfield(widget=forms.textinput(attrs={'placeholder':'comienze escribir','class':'span4'}))     articulo = forms.integerfield(widget=forms.hiddeninput())     cliente = utils.autocomplete_formfield('gestion.clientes',widget=widgets.autocompletewidget('gestion.clientes', view=views.autocomplete))     class meta:         model= models.linea 

gestion/urls.py

from django.conf.urls.defaults import patterns, include, url   gestion import views django.conf import settings import gestion.autocomplete_settings  urlpatterns = patterns('',     # examples:     # url(r'^$', 'imprenta.views.home', name='home'),     # url(r'^imprenta/', include('imprenta.foo.urls')),      # uncomment admin/doc line below enable admin documentation:     # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),      # uncomment next line enable admin:     # url(r'^admin/', include(admin.site.urls)),     url(r'^$', views.home, name='home'),     url(r'^facturas/$', views.facturas, name='facturas'),     url(r'^facturar/$', views.factura_nueva, name='facturar'),     url(r'^clientes/nuevo/$', views.cliente_nuevo, name='cliente-nuevo'),     url(r'^clientes/$', views.clientes, name='clientes'),     url(r'^clientes/detalle/([0-9]+)$', views.cliente_detalle, name='cliente_detalle'),     url(r'^cliente/([0-9]+)/facturas/$', views.facturas, name='cliente_facturas'),     url(r'^clientes/editar/([0-9]+)$', views.cliente_editar, name='cliente_editar'),     url(r'^articulos/$', views.articulos, name='articulos'),     url(r'^articulos/nuevo/$', views.articulo_nuevo, name='articulo_nuevo'),     url(r'^pedidos/$', views.pedidos, name='pedidos'),     url(r'^pedidos/lineas/nueva/$', views.nueva_linea_de_pedido, name='pedidos-linea-nueva'),     url(r'^pedidos/lineas/editar/([0-9]+)$', views.editar_linea_de_pedido, name='pedidos-linea-editar'),     url(r'^autocomplete/', include(views.autocomplete.urls)), ) + patterns('',     (r'^media/(?p<path>.*)$', 'django.views.static.serve', {         'document_root': settings.media_root})) 

you should never import views forms. forms used in views, not vice versa. i'd move autocomplete = autocompleteview('gestion') separate module (for example, gestion.autocomplete) , imported there.

p.s. please note modules in python named in lowercase, should gestion, not gestion


Comments

Popular posts from this blog

How to mention the localhost in android -

php - Calling a template part from a post -

c# - String.format() DateTime With Arabic culture -