Django的。无法将表单字段设为自动完成

时间:2020-10-16 09:04:09

标签: django autocomplete filtering livesearch

在为我的网络应用开发搜索过滤器时遇到了一个问题。我需要过滤器的一个字段作为自动填充字段,但不幸的是,它无法按预期工作。当我在此字段中键入smth时,尽管它必须显示一些选项,但它什么也不显示。 我在该字段中使用Bootstrap,该类为“ basicAutoComplete”,并且如您在下面的图片中所见(请不要注意字段的错误位置),没有显示任何信息。但是,如果我删除“ basicAutoComplete”,那么我的所有建筑物都将显示在下拉列表中,如第二张图片所示。 有人可以告诉我如何解决吗?

class 'basicAutoComplete'

no class

这是我的代码:

views.py


def device_rooms_search(request):
    device_rooms = DeviceRooms.objects.all()
    deviceRoomsFilter = DeviceRoomsFilter(request.GET, queryset=device_rooms)
    device_rooms = deviceRoomsFilter.qs
    builds = Buildings.objects.all()
    context = {'device_rooms_list': device_rooms, 'deviceRoomsFilter': deviceRoomsFilter}
    return render(request, "database/device_rooms/device_rooms_search.html", context)

filters.py

class DeviceRoomsFilter(df.FilterSet):
    name = df.CharFilter(field_name='room_number', lookup_expr='icontains')
    descr = df.CharFilter(field_name='description', lookup_expr='icontains')
    class Meta:
        model = DeviceRooms
        fields = ['name', 'facility_id', 'building_id', 'device_room_type', 'descr']

models.py

class DeviceRooms(models.Model):
    id = models.CharField(max_length=7, primary_key=True)
    room_number = models.CharField(max_length=30, unique=True)
    device_room_type = models.ForeignKey(DeviceRoomTypes, on_delete=models.CASCADE)
    building_id = models.ForeignKey(Buildings, on_delete=models.CASCADE)
    facility_id = models.ForeignKey(Facilities, on_delete=models.CASCADE)
    description = models.CharField(max_length=200, null=True)

search.html

<form method="get" action="">
      {% csrf_token %}
      <div style="text-align: center">
      {% for field in deviceRoomsFilter.form %}
              {% if field.name == 'name' %}
                    Room name: {{ field }}
              {% endif %}
              {% if field.name == 'facility_id' %}
                    Facility: {{ field }}
              {% endif %}
              {% if field.name == 'building_id' %}
                    Building: {% render_field field class="basicAutoComplete form-control col-md-2 offset-md-5" %}
              {% endif %}
              {% if field.name == 'device_room_type' %}
                    Room type: {{ field }}
              {% endif %}
              {% if field.name == 'descr' %}
                    Description: {{ field }}
              {% endif %}
      {% endfor %}
      </div>
</form>

<script>
$('.basicAutoComplete').autoComplete( {minLength: 1} ); 
$('.dropdown-menu').css({'top': 'auto', 'left': 'auto'});
</script>

0 个答案:

没有答案