首页 > 解决方案 > 自动完成什么都不做。怎么了?

问题描述

我有不起作用的自动完成代码。

我有输入字段类坐标,当我输入代码时,它会从我的数据库中找到与 geo_code 匹配的值,从而找到输入代码国家。

因此,当我键入UK它 时,它与geo_code最后一个匹配,country所以在这种情况下,英国是我键入的代码,它可以在 geo_code 中找到,国家是英国。该代码有效,我想要实现的是在打字时带来自动完成功能以提供建议。举些例子:

UK   United Kingdom
USA  United States of America

到目前为止我做了什么:

models.py中我有:

class Coordinate(models.Model):
    code = models.CharField(max_length=150)

class Profiles(models.Model):
    geocode=models.CharField(max_length=200)
    country=models.CharField(max_length=500)
    city=models.CharField(max_length=500)

    class Meta:
        managed=False
        db_table='profiles_country'

    def __str__(self):
        return '{}'.format(self.geocode)

forms.py中:

from dal import autocomplete

class CoordinateForm(forms.ModelForm):
    code= forms.CharField(max_length=150, label='',widget= forms.TextInput)

    class Meta:
        model = Coordinate
        fields = ('__all__')
        widgets = {
            'code': autocomplete.ModelSelect2(url='coordinate-autocomplete')}

view.py中:

class CoordinateAutocomplete(autocomplete.Select2QuerySetView):
        def get_queryset(self):
            if not self.request.user.is_authenticated():
                return Profiles.objects.none()
            qs = Profiles.objects.all()
            if self.q:
                qs = qs.filter(name__istartswith=self.q)
            return qs

base.html中

<!DOCTYPE html>
{% load static %}

<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">

    <link rel="stylesheet" href="{% static 'geoproj/css/main.css' %}">

  </head>
  <body>

    <div>{% block content %}{% endblock  %} 

         {% block javascripts %} {% endblock %} </div>

  </body>
</html>

geo.html中:

{% extends "base.html" %}
{% block content %}

{% if user.is_authenticated %}
            <form enctype="multipart/form-data" method="POST" >
                    {% csrf_token %}
                    {{ form}}
                    {{form.media }}
            <button class = "btn btn-primary" type="submit">OK</button></form>


{% endif %}

{% endblock content %}

{% block javascripts %} {% endblock %}

感谢您帮助解决此案。

标签: pythonmysqldjangodjango-modelsautocomplete

解决方案


我没有看到链接 URL 响应和 HTML 模板的 js。在这里我将如何解决它。前提是您的观点有效。您将通过以下方式生成建议

  1. 首先创建一个js事件监听器从表单的输入框获取文本
  2. 收到此文本后,您将对您提到的视图 URL 进行 ajax 调用
  3. 获得 ajax 结果后,您将创建一个 for 循环并为输入生成选择标签。

这就是我编写 js 代码以与 Html 模板和 Django 自动完成视图 URL 通信的方式。


推荐阅读