0
我有一個SQLite數據庫(從iOS應用程序)類似:防止從Django的解析不正確的時間戳字段
CREATE TABLE ZSPL (Z_PK INTEGER PRIMARY KEY, ZWHEN TIMESTAMP, ZWHEN2 real)
1, 492445270.121238, 492445270.121238
2, 492445270.871551, 492445270.871551
我希望建立一個Django(V1.10)模型,它following these docs工作:
APPLE_EPOCH = datetime(year=2001, month=1, day=1, hour=0, second=0)
def apple_time_to_datetime(apple_time):
if isinstance(apple_time, datetime):
return apple_time
return APPLE_EPOCH + timedelta(seconds=float(apple_time))
class AppleDateTimeField(models.DateTimeField):
def from_db_value(self, value, expression, connection, context):
return apple_time_to_datetime(value)
def to_python(self, value):
return apple_time_to_datetime(value)
class Spl(models.Model):
when = AppleDateTimeField(db_column='ZWHEN')
但是因爲here試圖在ZWHEN
解析數值轉換器註冊parse_datetime
這樣的錯誤。如果這些轉換器被註釋掉,那麼dbapi2 convert_timestamp
函數here上的錯誤。
類似地,當db_column='ZWHEN'
更改爲db_column='ZWHEN2'
時,由於日期時間轉換器在自定義轉換器之前註冊,所以它會發生錯誤。你可以在this line上看到conv
的值。
我想知道是否有反正要解決這個問題並且首先調用自定義from_db_value
轉換器?
暫時我使出使用複製ZWHEN2
,而不是ZWHEN
場和編輯功能如下:
converters[i] = (field_converters + backend_converters, expression)
代替:
converters[i] = (backend_converters + field_converters, expression)