另一个Django和jQuery自动完成新手

时间:2013-03-05 16:05:20

标签: django jquery-ui jquery-ui-autocomplete

经过一段时间在stackoverflow中搜索类似的问题,并尝试不同的'修复',我必须说我被困在这里。我只是试图使用jQuery-ui实现一个简单的自动完成功能,但不知何故,它没有显示任何自动完成的名称,尽管在数据库中加载了一些。我告诉你我的逻辑和模板。

models.py

class Usuario(models.Model):
  nombre = models.CharField(max_length=128)
  facultad = models.ForeignKey(Facultad, null=False, blank=False)
  carrera = models.ForeignKey(Carrera, null=False, blank=False)
  dni = models.PositiveIntegerField(unique=True)
  direccion = models.CharField(max_length=128)
  telefono = models.CharField(max_length=64)
  email = models.EmailField(max_length=254)
  fechaingreso = models.DateTimeField(null=False, blank=False)
  creadopor = models.ForeignKey(User, default=0)

  def __unicode__(self):
      return self.nombre

urls.py

url(r'^get_usuarios/', 'get_usuarios', name='get_usuarios'),

prestar.html

<script type="text/javascript">
$(function() {
  $("#usuarios").autocomplete({
    source: "{% url get_usuarios %}",
    minLength: 2,
  });
});

<div class="ui-widget">
      <label for="usuarios">Usuarios: </label>
      <input id="usuarios">
    </div>

<script src="{{ STATIC_URL }}js/jquery-1.9.1.min.js"></script>
<script src="{{ STATIC_URL }}js/jquery-ui-1.10.1.custom.min.js"></script>

(最后一部分来自base.html,它位于模板的末尾)

views.py

def get_usuarios(request):
  if request.is_ajax():
      q = request.GET.get('term', '')
      usuarios = Usuario.objects.filter(nombre__icontains=q)[:20]
      results = []
      for usuario in usuarios:
          usuario_json = {}
          usuario_json['id'] = usuario.id
          usuario_json['label'] = usuario.nombre
          usuario_json['value'] = usuario.nombre
          results.append(usuario_json)
      data = simplejson.dumps(results)
  else:
      data = 'fail'
  mimetype = 'application/json'
  return HttpResponse(data, mimetype)

特别是我怀疑这是否

usuario_json['id'] = usuario.id
usuario_json['label'] = usuario.nombre
usuario_json['value'] = usuario.nombre

是对的,因为我无法意识到它们究竟是什么意思。

感谢任何希望照亮我的人!

1 个答案:

答案 0 :(得分:0)

像往常一样,自动解决了愚蠢的错误。应该使用它导入jQuery-ui BEFORE