如何从sqlalchemy orm制造混合属性出现在asdict中
我有一个像下面的模型,如下面
class Invoice(Base):
invoice_no = Column(String(64), nullable=False, unique=True)
invoice_date = Column(DateTime, nullable=False)
due_date = Column(DateTime, nullable=False)
cgst_rate = Column(DecimalRate, nullable=False, default=CGST_RATE)
sgst_rate = Column(DecimalRate, nullable=False, default=SGST_RATE)
定义了列属性和混合属性,如下面的
# column property
total_amount = column_property(
select(
[func.round(func.coalesce(func.sum(InvoiceDetail.total_amount), 2))]
).where(InvoiceDetail.invoice_id == invoice_id)
)
cgst_amount = column_property((total_amount * cgst_rate))
sgst_amount = column_property((total_amount * sgst_rate))
@hybrid_property
def grand_total(self):
return self.total_amount + self.cgst_amount + self.sgst_amount
@grand_total.expression
def grand_total(cls):
return func.sum(cls.total_amount,cls.cgst_amount,cls.sgst_amount)
返回sess.query对象为 invoice.asdict() .... column_properties正在正确启动,但我没有得到混合属性.....有关如何通过ASDIC()响应混合属性的任何输入。
I have a model like below
class Invoice(Base):
invoice_no = Column(String(64), nullable=False, unique=True)
invoice_date = Column(DateTime, nullable=False)
due_date = Column(DateTime, nullable=False)
cgst_rate = Column(DecimalRate, nullable=False, default=CGST_RATE)
sgst_rate = Column(DecimalRate, nullable=False, default=SGST_RATE)
I defined column property and hybrid property as below
# column property
total_amount = column_property(
select(
[func.round(func.coalesce(func.sum(InvoiceDetail.total_amount), 2))]
).where(InvoiceDetail.invoice_id == invoice_id)
)
cgst_amount = column_property((total_amount * cgst_rate))
sgst_amount = column_property((total_amount * sgst_rate))
@hybrid_property
def grand_total(self):
return self.total_amount + self.cgst_amount + self.sgst_amount
@grand_total.expression
def grand_total(cls):
return func.sum(cls.total_amount,cls.cgst_amount,cls.sgst_amount)
When I return the sess.query object as invoice.asdict()....column_properties are coming properly but i don't get hybrid property.....any inputs on how to get hybrid property in response via asdic().
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论