Django как показать варианты выбора в поле ввода select
как я могу показать варианты выбора во входе "select" для формы?
А почему я не могу получить доступ к DateInput, чтобы установить Input в качестве datepicker в форме, как я делаю для "grund" в качестве "Select"?
Код:
from django import forms
from django.forms.widgets import DateInput
from .models import expense
class DateInput(forms.DateInput):
input_type = 'date'
class ExpenseForm(forms.ModelForm):
class Meta:
model = expense
CHOICES = (
('ME', '1'),
('YOU', '2'),
('WE', '3'),
)
fields = [
'datum',
'grund',
'beschreibung_grund',
'summe_ausgabe'
]
widgets = {
'datum': DateInput(),
'grund': forms.Select
}
Это не ответ на ваш вопрос, но это способ, которым вы можете работать с формами без использования django forms. Я не использую его, потому что он сложный.
В вашем html сделайте что-то вроде этого:
Создайте форму
<form action="{% url 'url_to_django_view' %}" method='POST'>
<input type="text" name='name_to_call'>
<button type='submit'> submit </button>
</form>
Создайте представление для обработки формы
def django_view(request):
if request.method == 'POST':
form_info = request.POST['name_to_call']
# do the stuff
return redirect('url_to_redirect') #or any other actions, like return context
# with calculated data
Это способ, которым вы можете обрабатывать и вводить данные без форм django. Это более просто для понимания
Я думаю, что если вы будете использовать html-форму непосредственно для выполнения POST-запроса вместо использования формы Django, это будет легко для вас. Моя идея такова: создайте модель в model.py с необходимыми именами полей, которые вы хотите видеть в опциях выбора. Перенесите и создайте несколько объектов, вызовите все объекты в представлении с помощью ORM и выведите их в шаблон. В шаблоне распакуйте объекты с помощью цикла for и можете использовать ID объекта в значении тега option и сам объект между тегами option, которые будут показаны как элементы select в шаблоне. Дайте мне знать, если вам нужны коды.
Простите, я неправильно сформулировал свой вопрос.
Что я искал, так это как я могу вывести на экран:
<input type="select">
на моей html-странице.
У меня уже было решение. Мой список Choices просто должен быть списком кортежей, и мне нужно было исключить последний ',' в кортеже.
from django import forms
from django.forms.widgets import DateInput
from .models import expense
class DateInput(forms.DateInput):
input_type = 'date'
class ExpenseForm(forms.ModelForm):
class Meta:
model = expense
fields = [
'datum',
'grund',
'beschreibung_grund',
'summe_ausgabe'
]
CHOICES = [
('ME', '1'),
('YOU', '2'),
('WE', '3')
]
widgets = {
'datum': DateInput(),
'grund': forms.Select(choices=CHOICES)
}