Найти - Пользователи
Полная версия: TimeField или CharField
Начало » Django » TimeField или CharField
1
bs0d
Приветствую. Помогите с такой “проблемой”:

Имеется Модель:
class Request(models.Model):
    ....
    actual_before = models.TimeField(blank=False, verbose_name='Актуально до')

и Форма:
class FormAdd(forms.Form):
    ...
    actual_before = forms.TimeField(input_formats=['%H:%M'], label='Актуально до', widget=forms.Select())

Необходимо дать юзеру выбрать время в формате 09:00 09:30 10:00 (с интервалом в 30 минут), и сохранять сие в таблицу, дабы потом проходиться кроном по базе и удалять неактуальные реквесты.

Как бы вы сделали подобное решение?
Не могу определиться, что будет правильнее: добавить choices для Select, или сделать отдельную таблицу. И в модели предусмотрен формат hh:mm:ss; не пойму где мои hh:mm преобразовывать в формат модели (при валидации формы, или есть более красивый вариант)
FishHook
Селект для времени? Как то это бесчеловечно. А если сделать два селекта: для часов и минут? А еще лучше не селекты, а спинбоксы.
bs0d
Дело в том, что юзеру необходимо предоставить только определенные часы/минуты для выбора; поэтому и используется единственный Селект с фиксированным набором.

По итогу реализовал так (кстати генератор нельзя проще сделать?)):
    CHOICES = tuple(
        (
            '0%s:00' % x if x < 10 else '%s:00' % x,
            '0%s:00' % x if x < 10 else '%s:00' % x,
        ) for x in range(00, 24)
    )
actual_before = forms.TimeField(input_formats=['%H:%M'], label='Актуально до', widget=forms.Select(choices=CHOICES))

А в settings добавил:
TIME_INPUT_FORMATS = (
    '%H:%M',
)
Теперь данные для записи в таблицу принимаются в виде hh:mm, а записываются как hh:mm:ss. В админке поле так же принимает/отображает значения в формате hh:mm :
FishHook
bs0d
Дело в том, что юзеру необходимо предоставить только определенные часы/минуты для выбора;
И что вам мешает ограничить выбор пользователя в двух селектах или двух спинбоксах?
bs0d
Хороший вопрос. Селекты/спинбоксы будут нативными джанговскими, или придется все вручную пилить?
Я пока с фреймворком на “Вы”, 99% функционала просто не знаю.
Ну и вопрос юзабельности тоже стоит.
FishHook
bs0d
Хороший вопрос. Селекты/спинбоксы будут нативными джанговскими, или придется все вручную пилить?
Ну вы же можете добавить в форму два поля? И переопределите save для того, чтобы по значениям этих двух полей собиралось ваше время.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB