Я пытаюсь создать настраиваемое поле, чтобы иметь возможность хранить даты до нашей эры в моей базе данных.Он будет принимать кортеж Julian Date в качестве входных данных и преобразовывать его в JDN через библиотеку jdcal.Проблема в том, что встроенный в Python модуль datetime не поддерживает даты BC, поэтому я не могу проанализировать значения БД через него.Я думаю, что мое поле сохранено для правильного сохранения, но я не уверен, как сериализовать необработанное значение postgres в мое собственное представление, вероятно, через кортеж (year, month, day)
, чтобы соответствовать библиотеке jdcal.
from jdcal import gcal2jd
class JDNField(models.DateField):
description = "A field to save JDN values as postgres `date` types"
def get_db_prep_value(self, value, *args, **kwargs):
if value is None:
return None
jd = gcal2jd(*value)[0] + gcal2jd(*value)[1] + 0.5
return f'J{jd}'
def to_python(self, value):
if value is None:
return None
return # should it go here?
def from_db_value(self, value, expression, connection, context):
return self.to_python(value)