Python 如何在Ortoise ORM中使用Postgresql数组字段

Python 如何在Ortoise ORM中使用Postgresql数组字段,python,postgresql,asyncpg,tortoise-orm,Python,Postgresql,Asyncpg,Tortoise Orm,差不多就是这个标题,我正试图建立一个乌龟ORM模型,它将包含对应于Postgresql数组列的字段 似乎要正确地完成这项任务,我需要从asyncpg(因为它有完整的阵列支持)开始构建,并扩展龟域。然而,我只是从乌龟开始,也许有更好/更容易的方法前进/有人已经做了类似的事情。您需要实现自己的字段类型。以下是我的实现: 从键入导入列表、联合、类型、可选、任意 导入json 来自tortoise.fields.base导入字段 从乌龟。模型导入模型 ArrayField中的类(字段,列表): """

差不多就是这个标题,我正试图建立一个乌龟ORM模型,它将包含对应于Postgresql数组列的字段


似乎要正确地完成这项任务,我需要从asyncpg(因为它有完整的阵列支持)开始构建,并扩展龟域。然而,我只是从乌龟开始,也许有更好/更容易的方法前进/有人已经做了类似的事情。

您需要实现自己的字段类型。以下是我的实现:


从键入导入列表、联合、类型、可选、任意
导入json
来自tortoise.fields.base导入字段
从乌龟。模型导入模型
ArrayField中的类(字段,列表):
"""
专门用于PostgreSQL的Int数组字段。
此字段可以存储int值列表。
"""
SQL_TYPE=“int[]”
定义初始(自我,**kwargs):
超级()
def到_db_值(
self,value:List[int],实例:“Union[Type[Model],Model]”
)->可选[列表[int]]:
返回值
def to_python_value(self,value:Any)->可选[List[int]]:
如果isinstance(值,str):
array=json.load(value.replace(“,”))
返回[int(x)表示数组中的x]
返回值
我没有动态类型字段的实现,这并不难

在某些情况下,您需要将更多的逻辑放入
到\u db\u value
到\u python\u value
强制转换中。例如,如果您使用的是
UUID[]