В модели у меня есть целочисленное поле. Значение этого поля "число дней с 1.1.1970", поэтому я хотел отобразить его в интерфейсе администратора как дату, используя AdminDateWidget
, чтобы упростить выбор даты.
Моя единственная идея - создать новый виджет для перевода целого числа в дату:
class ExpireWidget(AdminDateWidget):
def render(self, name, value, attrs=None):
if isinstance(value, (int, long)):
value = datetime.date(1970, 1, 1) + datetime.timedelta(value)
return super(ExpireWidget, self).render(name, value, attrs)
И следующий код в admin.py
:
class LdapUserAdminForm(forms.ModelForm):
class Meta:
widgets = {
'shadow_expire': ExpireWidget
}
Когда я показываю это в административной дате, все в порядке, но прежде чем сохранить его, я должен перевести дату в целое число. Я думал, что смогу добиться этого, используя функцию clean_field_name
, но некоторая проверка выполняется до clean_field_name
(это clean()
?), И я получаю сообщение об ошибке, что мне нужно ввести целочисленное значение.
Как мне перевести дату в int перед проверкой?