Django Autcomplete light для создания выпадающих списков с возможностью поиска - PullRequest
0 голосов
/ 11 марта 2019

Я хочу создать форму Django с одним полем выбора, которое может автоматически заполняться из набора определенных значений.По сути, у меня есть таблица базы данных, которая называется player, и в ней есть атрибут playername.Я хочу создать форму с полем выбора, содержащим данные из этой таблицы игроков с возможностью поиска. Вот моя попытка:

Views.py

from django.shortcuts import render,redirect
from django import forms
from pages.models import Team ,Player,Match
from decimal import *
from django.contrib.admin.widgets import FilteredSelectMultiple
from dal import autocomplete
class PlayerAutocomplete(autocomplete.Select2ListView):
    def get_list(self):
        x=[]
        y=Player.objects.values('PlayerName')
        for i in range(0,len(y)):
            x.append(y[i]['PlayerName'])
        return x
class PlayingForm(forms.Form):
    def get_choice_list():
        x=[]
        y=Player.objects.values('PlayerName')
        for i in range(0,len(y)):
            x.append(y[i]['PlayerName'])
        return x
    player = autocomplete.Select2ListChoiceField(choice_list=get_choice_list,widget=autocomplete.ListSelect2(url='player-autocomplete'))

urls.py

from django.urls import path
from django.conf.urls import url
from pages import views
from pages.views import PlayerAutocomplete

urlpatterns = [
   path('',views.home,name='home'),
   path('about/',views.about,name='about'),    
   path('administrator/',views.administrator,name='administrator'),
   path('add_team/',views.add_team,name="add_team"),
   path('add_player/',views.add_player,name="add_player"),
   path('add_match/',views.add_match,name="add_match"),
   path('add_playing/',views.add_playing,name="add_playing"),
   path('add_playing_teams/',views.add_playing_teams,name="add_playing_teams"),
   url(
        r'^player-autocomplete/$',
        PlayerAutocomplete.as_view(),
        name='player-autocomplete',
    ),
]

add_playing_teams.html

  {% extends 'admin_base.html' %}
{% block content %}
<center>
        <div class="container" style="margin-top: 100px;">
            <h1>Add Playing teams</h1>
            <div style="width:30%">
                <form role="form" method="post">
                    {% csrf_token %}
                    {% for error in form.non_field_errors %}
                    <div class="form-group has-errors text-danger small"style="margin-left:100px;">
                        {{error}}
                    </div>
                    {% endfor %}
                    {% for field in form %}
                    <div class="form-group has-errors text-danger small"style="margin-left:100px;">
                        {{field.errors}}
                    </div>
                    <div class="form-group has-errors text-danger small"style="margin-left:100px;">
                    </div>
                    <div class="form-group" >
                        {{field}}
                    </div>
                    {% endfor %}
                    <button class="btn btn-primary" type="submit" style="width:100%">Submit</button>
            </div>
            </form>
        </div>
        </center>
{% endblock %}
{% block footer %}
<script type="text/javascript" src="/static/collected/admin/js/vendor/jquery/jquery.js"></script>
{{ form.media }}
{% endblock %}

Это вывод, который я получаю сейчас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...