Как изменить метод ввода формы Django по умолчанию ? с текстового ввода на выбор

Я ниже создал представление,

class PostCreateView(LoginRequiredMixin, CreateView):
    model = Post
    fields = ['title','name']
    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

и в шаблоне Post create я просто поместил его как тег формы

<form method="POST" >
            {% csrf_token %}
      
                {{ form|crispy }}
            
        </form>

Я хочу, чтобы поле name было выпадающим выбором во фронтенде HTML, Что мне делать?

Возможно добавить поле выбора в models.py, но я не могу этого сделать и у меня есть другая идея для реализации,

На мой взгляд, лучший способ сделать это - создать класс формы и передать форму в представление, а не заставлять представление создавать форму.

Вот как может выглядеть форма

from django import forms
from django.forms.widgets import Select
#also import your models from your app

class PostForm(forms.ModelForm):
   class Meta:
      # name_choices needs to be a list of tuples that have
      # the select option value as the first index, and the option display text
      # as the second
      name_choices = [(value,option_text),...]
      model = Post
      fields = ['title','name']
      widgets = {'name':Select(choices=name_choices)}
Вернуться на верх