【发布时间】:2022-01-05 13:19:20
【问题描述】:
我有一个针对 Postgresql 数据库运行的 SQLAlchemy 模型。在我的模型中,我有一个 invoice_number 字符串字段,如下所示:
- 2022-01-1
- 2022-01-10
- ...
- 2022-01-2
- ...
(我希望他们排序-1, -2, ..., -10, ...)
为了对此进行排序,我想要一个混合字段,将字符串作为元组返回(并正确排序),由- 分割。
在我目前的模型中(代码使用 Flask-SQLalchemy,它将 SQLalchemy 内容包装在 db 对象后面,否则相同):
class Orders(db.Model):
invoice_number = db.Column(db.String(32), nullable=True)
@hybrid_property
def invoice_number_parts(self):
return self.invoice_number.split("-")
@invoice_number_parts.expression
def invoice_number_parts(cls):
from sqlalchemy import func
return func.split(cls.invoice_number)
这给了我一个ValueError: Invalid model property name <class 'webshop.models.Orders'>.invoice_number_parts
tutorial mentions Functions,但我找不到有关 Postgresql 可用的预定义函数的文档(我认为 string_to_array function 可以做到这一点)。
我的方法完全不在此列吗?我不需要设置器,我理解 hybrid_property 是返回值,@...expression 是 SQL 生成部分。
【问题讨论】:
标签: python python-3.x postgresql sqlalchemy flask-sqlalchemy