Проблемы с пользовательскими полями модели 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)

Можно было бы найти лучший способ, но не уверен, как это сделать.

Спасибо за помощь!

Вернуться на верх