34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
from app.extensions import db
|
|
from datetime import datetime
|
|
|
|
|
|
class MaterialBase(db.Model):
|
|
__tablename__ = 'material_base'
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
# 核心字段
|
|
sku_code = db.Column(db.String(100), unique=True, nullable=False) # 唯一编码
|
|
name = db.Column(db.String(255), nullable=False) # 名称
|
|
spec_model = db.Column(db.String(255)) # 规格型号
|
|
unit = db.Column(db.String(50)) # 单位
|
|
category = db.Column(db.String(100)) # 分类
|
|
|
|
# 审计字段 (自动记录时间)
|
|
created_at = db.Column(db.DateTime, default=datetime.utcnow)
|
|
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
|
|
|
# 关联关系 (让 StockBuy 可以反向找到 Material)
|
|
# 这里的 dynamic 允许在 material.stock_buys 时进行进一步过滤
|
|
stock_buys = db.relationship('StockBuy', back_populates='material', lazy='dynamic')
|
|
|
|
def to_dict(self):
|
|
"""将对象转换为字典,方便接口返回"""
|
|
return {
|
|
'id': self.id,
|
|
'sku_code': self.sku_code,
|
|
'name': self.name,
|
|
'spec_model': self.spec_model,
|
|
'unit': self.unit,
|
|
'category': self.category,
|
|
'created_at': self.created_at.strftime('%Y-%m-%d %H:%M:%S') if self.created_at else None
|
|
} |