У меня проблема с полями DateTimeInput в Django 1.8. используетсяDjango 1.8 DateTimeInput сохранение как UnixTimestamp
Следующая форма:
def __init__(self, *args, **kwargs):
"""Additional init function for changing field behavior
"""
super(UpdateMaintenanceForm, self).__init__(*args, **kwargs)
self.fields['name'].widget = forms.TextInput(attrs={'class': 'form-control'})
self.fields['description'] = forms.CharField(
required=False, widget=forms.Textarea(attrs={'class': 'form-control'})
)
self.fields['active_since'] = forms.DateTimeField(
input_formats=['%d.%m.%Y %H:%M'], widget=forms.DateTimeInput(attrs={'class': 'form-control'})
)
self.fields['active_till'] = forms.DateTimeField(
input_formats=['%d.%m.%Y %H:%M'], widget=forms.DateTimeInput(attrs={'class': 'form-control'})
)
self.initial['active_since'] = datetime.fromtimestamp(self.initial['active_since']).strftime("%d.%m.%Y %H:%M")
self.initial['active_till'] = datetime.fromtimestamp(self.initial['active_till']).strftime("%d.%m.%Y %H:%M")
Я хранения дат в Unix временные метки в базе данных. При добавлении даты я получил сообщение об ошибке «Введите действительную дату/время». Вступая в отладчик, я обнаружил, что ошибка возникает из метода to_python, определенного для IntegerFields. Проблема очень ясна для меня, я не могу добавить объект datetime к целочисленному полю. Но я не хочу хранить даты в datetime в базе данных. Поэтому мне нужно изменить метод to_python для преобразования объекта datetime в временную метку unix. Что было бы лучшим способом сделать это? Напишите настраиваемое поле для моей модели или есть способ манипулирования виджетами с помощью собственного метода to_python?