Следующая ситуация:
Я хочу иметь небольшую форму, в которой пользователь может ввести день, время начала и время окончания. Для каждого из этих трех полей я хочу иметь указатель даты / времени. Так как я не хочу использовать Bootstrap или jQuery, потому что мой проект очень маленький и я просто хочу, чтобы он был маленьким, я хотел использовать встроенные средства выбора HTML, которые отображаются при изменении типа ввода поля на «date» или «date». время'.
Я пытался изменить типы ввода моих полей в соответствии с этим вопросом / ответом:
Django form.as_p DateField не показывает тип ввода в качестве даты
Это не сработало для меня.
Это моя форма со входами. Есть два подхода, для DateInput, который я пробовал, как показано в связанном вопросе, для TimeInput, который я пытался переопределить виджет.
from django import forms
from django.contrib.admin import widgets
from django.utils import timezone
from django.forms.widgets import TimeInput
from .models import Occupancy
class UltraDateInput(forms.DateInput):
input_type = 'date'
class UltraTimeInput(TimeInput):
input_type = 'time'
class OccupancyForm(forms.ModelForm):
occupancy_date = forms.DateField()
start_time = forms.TimeField()
end_time = forms.TimeField()
class Meta:
model = Occupancy
exclude = ['user', 'start', 'end']
fields = ['occupancy_date', 'start_time', 'end_time',
'notes']
widgets = {
'occupancy_date': UltraDateInput(),
'start_time': UltraTimeInput(),
'end_time': UltraTimeInput()
}
Странные ультра-имена потому, что я думал, что мои пользовательские виджеты, возможно, затенены какой-то более глубокой логикой, но это не помогло.
Я ожидаю, что виджет изменит тип ввода моих сгенерированных полей на дату и время в моем HTML-файле, который я получаю в конце, но они все еще остаются простыми текстовыми вводами.