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)
        }

Вернуться на верх