Проблемы с пользовательскими полями модели Django
Я пытаюсь сделать это уже несколько дней, но все еще не могу понять, где ошибка.
На данный момент я использую общий CreateView
в views.py для обработки формы. Конкретное текстовое поле, о котором идет речь, должно принимать строку в формате "HH:mm" или ":mm" (или 0), преобразовывать ее в минуты и сохранять в БД как целое число.
По какой-то причине в form.errors по-прежнему говорится, что это должно быть целое число. Очевидно, что изначально это строка, но к моменту сохранения она должна быть целым числом.
Поле пользовательской модели в models.py
class FlightTimeFieldInt(models.IntegerField):
description = "a field to input flying time"
def get_db_prep_value(self, value, *args, **kwargs):
if value is None:
return None
return value
def to_python(self, value):
if value is None or isinstance(value, int):
return value
if str(value.split(":")[0]) == '':
split = value.split(":")[1]
value = int(split)
print(value)
return int(value)
else:
h, m = value.split(":")
value = (int(h) * 60) + int(m)
return value
def from_db_value(self, value, expression, connection, context):
return self.to_python(value)
def formfield(self, **kwargs):
defaults = {'form_class': None}
defaults.update(kwargs)
return super(FlightTimeFieldInt, self).formfield(**defaults)
Можно было бы найти лучший способ, но не уверен, как это сделать.
Спасибо за помощь!