Я хочу создать форму 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 %}
Это вывод, который я получаю сейчас