2026-01-27 15:50:23 +08:00
|
|
|
|
#material.py
|
2026-01-26 13:47:53 +08:00
|
|
|
|
from app.extensions import db
|
2026-01-26 17:00:12 +08:00
|
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
2026-01-26 13:47:53 +08:00
|
|
|
|
class MaterialBase(db.Model):
|
|
|
|
|
|
__tablename__ = 'material_base'
|
|
|
|
|
|
|
|
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
2026-01-27 15:50:23 +08:00
|
|
|
|
name = db.Column(db.String(255), nullable=False) # 名称
|
|
|
|
|
|
category = db.Column(db.String(100)) # 类别
|
|
|
|
|
|
material_type = db.Column(db.String(100)) # 类型
|
|
|
|
|
|
spec_model = db.Column(db.String(255)) # 规格型号
|
|
|
|
|
|
unit = db.Column(db.String(50)) # 计量单位
|
|
|
|
|
|
visibility_level = db.Column(db.Integer, default=0) # 信息可见等级
|
|
|
|
|
|
manual_link = db.Column(db.Text) # 通用说明书
|
|
|
|
|
|
product_image = db.Column(db.Text) # 通用产品图
|
|
|
|
|
|
is_enabled = db.Column(db.Boolean, default=True) # 是否启用
|
2026-01-26 17:00:12 +08:00
|
|
|
|
|
2026-01-27 15:50:23 +08:00
|
|
|
|
# 【核心关联】
|
|
|
|
|
|
# 这里定义了反向关系,lazy='dynamic' 允许我们后续做 count() 查询
|
|
|
|
|
|
# cascade='all, delete-orphan' 并不是在这里用的,因为我们是手动控制逻辑
|
2026-01-26 17:00:12 +08:00
|
|
|
|
stock_buys = db.relationship('StockBuy', back_populates='material', lazy='dynamic')
|
|
|
|
|
|
|
|
|
|
|
|
def to_dict(self):
|
|
|
|
|
|
return {
|
|
|
|
|
|
'id': self.id,
|
|
|
|
|
|
'name': self.name,
|
|
|
|
|
|
'category': self.category,
|
2026-01-27 15:50:23 +08:00
|
|
|
|
'material_type': self.material_type,
|
|
|
|
|
|
'spec_model': self.spec_model,
|
|
|
|
|
|
'unit': self.unit
|
2026-01-26 17:00:12 +08:00
|
|
|
|
}
|