全局审计日fix: 使用鸭子类型强制安全解包 SQLAlchemy Row 对象,彻底解决 to_dict 报错志
This commit is contained in:
@ -47,6 +47,9 @@ class MaterialBase(db.Model):
|
||||
# 4. 关联服务库存 (StockService)
|
||||
stock_services = db.relationship('StockService', back_populates='base', lazy='dynamic')
|
||||
|
||||
# 5. 关联预警设置 (MaterialWarningSetting)
|
||||
warning_settings = db.relationship('MaterialWarningSetting', back_populates='material', lazy='dynamic', cascade='all, delete-orphan')
|
||||
|
||||
def to_dict(self):
|
||||
"""
|
||||
序列化方法
|
||||
@ -78,4 +81,30 @@ class MaterialBase(db.Model):
|
||||
'generalImage': parse_list(self.product_image),
|
||||
# 【核心修改】:直接返回布尔值,不再转成 1 或 0
|
||||
'isEnabled': bool(self.is_enabled),
|
||||
}
|
||||
|
||||
|
||||
class MaterialWarningSetting(db.Model):
|
||||
"""
|
||||
物料预警设置表模型
|
||||
对应数据库表: material_warning_settings
|
||||
"""
|
||||
__tablename__ = 'material_warning_settings'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
base_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False, comment='物料基础信息ID')
|
||||
is_enabled = db.Column(db.Boolean, default=False, comment='是否启用预警')
|
||||
yellow_threshold = db.Column(db.Numeric(10, 2), nullable=True, comment='黄色预警阈值')
|
||||
red_threshold = db.Column(db.Numeric(10, 2), nullable=True, comment='红色预警阈值')
|
||||
|
||||
# 关联关系
|
||||
material = db.relationship('MaterialBase', back_populates='warning_settings')
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
'id': self.id,
|
||||
'baseId': self.base_id,
|
||||
'isEnabled': bool(self.is_enabled),
|
||||
'yellowThreshold': float(self.yellow_threshold) if self.yellow_threshold is not None else None,
|
||||
'redThreshold': float(self.red_threshold) if self.red_threshold is not None else None
|
||||
}
|
||||
Reference in New Issue
Block a user