Введите действительную дату. в поле BC/AD в фреймворке django

В фреймворке Django с PostgreSql мне нужно хранить дату BC.

Итак, вот код, который я использую:

class BCEDateField(models.DateField):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
    def from_db_value(self, value, expression, connection):
        if value:
            if value.endswith('BC'):
                # Parse the BC date string and convert it to a negative year
                year, month, day = map(int, value[:-2].split('-'))
                return models.DateField().from_string(f"{-year:04d}-{month:02d}-{day:02d}")
            else:
                # Parse the CE date string directly
                return models.DateField().from_string(value)
        return value
    def to_python(self, value):
        if isinstance(value, str):
            if value.endswith('BC'):
                # Parse the BC date string and convert it to a negative year
                year, month, day = map(int, value[:-2].split('-'))
                return models.DateField().from_string(f"{-year:04d}-{month:02d}-{day:02d}")
            else:
                # Parse the CE date string directly
                return models.DateField().from_string(value)
        return value
    def get_prep_value(self, value):
        if value:
            if value.year <= 0:
                # Convert the negative year to a BC date string
                year, month, day = value.year * -1, value.month, value.day
                return f"{year:04d}-{month:02d}-{day:02d}BC"
            else:
                # Convert the CE date to a string
                return value.strftime("%Y-%m-%d")
        return value

НО ВЫДАЕТ ОШИБКУ:

Введите действительную дату.

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