首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Tortoise-ORM中使用Postgresql数组字段

如何在Tortoise-ORM中使用Postgresql数组字段
EN

Stack Overflow用户
提问于 2020-10-02 02:17:05
回答 1查看 804关注 0票数 3

就像标题一样,我正在尝试设置Tortoise-ORM模型,该模型将包含对应于Postgresql数组列的字段。

看起来要做好这件事,我需要从asyncpg (因为它有完整的数组支持)开始扩展乌龟字段。然而,我只是刚刚开始使用Tortoise,也许还有更好/更容易的方法/已经有人做了类似的事情。

EN

回答 1

Stack Overflow用户

发布于 2021-02-02 18:45:30

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

代码语言:javascript
复制
from typing import List, Union, Type, Optional, Any
import json

from tortoise.fields.base import Field
from tortoise.models import Model


class IntArrayField(Field, list):
    """
    Int Array field specifically for PostgreSQL.

    This field can store list of int values.
    """

    SQL_TYPE = "int[]"

    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    def to_db_value(
        self, value: List[int], instance: "Union[Type[Model], Model]"
    ) -> Optional[List[int]]:
        return value

    def to_python_value(self, value: Any) -> Optional[List[int]]:
        if isinstance(value, str):
            array = json.loads(value.replace("'", '"'))
            return [int(x) for x in array]
        return value

我没有动态类型字段实现,这并不是很难实现。

在某些情况下,您需要在to_db_valueto_python_value类型转换中加入更多的逻辑。例如,如果您使用的是UUID[]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64161083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档