@nicolette.stoltenberg
В Django можно создать выпадающий список с помощью формы и полей ChoiceField или ModelChoiceField.
Пример создания выпадающего списка с данными из заданного списка:
- Создайте форму, которая будет содержать поле ChoiceField:
1
2
3
4
5
6
7
8
9
|
from django import forms
class MyForm(forms.Form):
my_choices = (
('value1', 'Label 1'),
('value2', 'Label 2'),
('value3', 'Label 3'),
)
my_field = forms.ChoiceField(choices=my_choices, widget=forms.Select())
|
- В представлении, создайте экземпляр формы и передайте его в контекст шаблона:
1
2
3
4
5
6
|
from django.shortcuts import render
from .forms import MyForm
def my_view(request):
form = MyForm()
return render(request, 'my_template.html', {'form': form})
|
- В шаблоне, добавьте код для отображения формы:
1
2
3
4
5
|
{% csrf_token %}
{{ form }}
|
Теперь при отображении страницы по указанному URL будет отображаться выпадающий список с заданными значениями.
Пример создания выпадающего списка с данными из модели:
- Определите модель:
1
2
3
4
5
6
7
|
from django.db import models
class MyModel(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
|
- Создайте форму, которая будет содержать поле ModelChoiceField:
1
2
3
4
5
|
from django import forms
from .models import MyModel
class MyForm(forms.Form):
my_field = forms.ModelChoiceField(queryset=MyModel.objects.all(), widget=forms.Select())
|
- В представлении, создайте экземпляр формы и передайте его в контекст шаблона:
1
2
3
4
5
6
|
from django.shortcuts import render
from .forms import MyForm
def my_view(request):
form = MyForm()
return render(request, 'my_template.html', {'form': form})
|
- В шаблоне, добавьте код для отображения формы:
1
2
3
4
5
|
{% csrf_token %}
{{ form }}
|
Теперь при отображении страницы по указанному URL будет отображаться выпадающий список с данными из модели.