Как изменить метод ввода формы 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)}