Как создать выпадающий список в django?

Пользователь

от nicolette.stoltenberg , в категории: Python , 7 месяцев назад

Как создать выпадающий список в django?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от felix , 7 месяцев назад

@nicolette.stoltenberg 

В Django можно создать выпадающий список с помощью формы и полей ChoiceField или ModelChoiceField.


Пример создания выпадающего списка с данными из заданного списка:

  1. Создайте форму, которая будет содержать поле 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. В представлении, создайте экземпляр формы и передайте его в контекст шаблона:
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. В шаблоне, добавьте код для отображения формы:
1
2
3
4
5
    {% csrf_token %}
    {{ form }}
    


Теперь при отображении страницы по указанному URL будет отображаться выпадающий список с заданными значениями.


Пример создания выпадающего списка с данными из модели:

  1. Определите модель:
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


  1. Создайте форму, которая будет содержать поле 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. В представлении, создайте экземпляр формы и передайте его в контекст шаблона:
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. В шаблоне, добавьте код для отображения формы:
1
2
3
4
5
    {% csrf_token %}
    {{ form }}
    


Теперь при отображении страницы по указанному URL будет отображаться выпадающий список с данными из модели.