python - 在自定义 django 字段中序列化来自 postgres 的原始值
问题描述
我正在尝试创建一个自定义字段,以便能够在我的数据库中存储 BC 日期。它将一个 Julian Date 元组作为输入,并通过 jdcal 库将其转换为 JDN。问题是 python 的内置 datetime 模块不支持 BC 日期,所以我无法通过它解析 db 值。我想我已经正确保存了我的字段,但是我不确定如何将原始 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)
解决方案
推荐阅读
- python - 如何在 python 中关闭拉取请求?
- c++ - MSVC 是否曾经正确支持基于枚举的位域?
- javascript - Js/Jquery Drop 事件采用 .lnk 文件而不是真实文件
- javascript - 将两个数组中的值交替到新的第三个数组中
- angular - 订阅 combineLatest 中的所有 observables
- mysql - 使用下一行的日期作为当前行的结束日期
- c# - 如何使用 WPF-Mediakit 从 Stream 或 MemoryStream 播放视频?
- javascript - 分析 Chrome 浏览器中的应用程序内存泄漏
- ios - Scrollview 在 xcode 11 中使用约束具有不明确的可滚动内容
- graphql - 使用 github API v4 graphQL 获取提交更改的文件和补丁