У модели много полей типа ДатаВремя
models.py
class Order(models.Model):
...
dt_receipt = models.DateTimeField(blank=True, null=True, verbose_name='...')
dt_work_begin = models.DateTimeField(blank=True, null=True, verbose_name='...')
dt_work_end = models.DateTimeField(blank=True, null=True, verbose_name='...')
dt_delay = models.DateTimeField(blank=True, null=True, verbose_name='...')
dt_leave = models.DateTimeField(blank=True, null=True, verbose_name='...')
dt_arrive = models.DateTimeField(blank=True, null=True, verbose_name='...')
...
На форме приходится писать
много повторяющегося кода:
forms.py
dt_receipt = forms.DateTimeField(required=False, widget=DateInput(attrs={'type': 'datetime-local'}),
initial=format(datetime.date.today(), '%Y-%m-%dT%H:%M'), localize=True,
input_formats=['%Y-%m-%dT%H:%M'])
# и тоже самое для оставщихся 5 полей класса.
Чтобы не писать повторяющийся код, я создал свой класс MyDateTimeField с нужными мне параметрами.
И пытаюсь его использовать
forms.py
class MyDateTimeField(forms.DateTimeField):
widget = DateInput(attrs={'type': 'datetime-local'})
input_formats = ['%Y-%m-%dT%H:%M']
initial = format(datetime.date.today(), '%Y-%m-%dT%H:%M')
localize = True
required = False
class OrderForm(forms.ModelForm):
class Meta:
model = Order
dt_receipt = MyDateTimeField(label='...')
Однако при таком способе удалось переопределить только параметры
widget и
input_formats
Что касается
initial и
required - они берут значения по-умолчанию из
DateTimeField а не из моего класса
MyDateTimeField.
Как проверить какое значение у
localize не знаю.
Вопрос:
Можно ли (как) создать свой класс на основе DateTimeField таким образом, чтобы значения по-умолчанию для параметров initial, required и localize брались из собственного класса?
Цель: писать поменьше повторяющегося кода.