44 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from app.models.user import db
 | 
						|
from datetime import datetime
 | 
						|
 | 
						|
 | 
						|
class Category(db.Model):
 | 
						|
    __tablename__ = 'categories'
 | 
						|
 | 
						|
    id = db.Column(db.Integer, primary_key=True)
 | 
						|
    name = db.Column(db.String(64), nullable=False)
 | 
						|
    parent_id = db.Column(db.Integer, db.ForeignKey('categories.id'), nullable=True)
 | 
						|
    sort = db.Column(db.Integer, default=0)
 | 
						|
 | 
						|
    # 关系 - 只保留与自身的关系
 | 
						|
    parent = db.relationship('Category', remote_side=[id], backref='children')
 | 
						|
 | 
						|
    def __repr__(self):
 | 
						|
        return f'<Category {self.name}>'
 | 
						|
 | 
						|
 | 
						|
class Book(db.Model):
 | 
						|
    __tablename__ = 'books'
 | 
						|
 | 
						|
    id = db.Column(db.Integer, primary_key=True)
 | 
						|
    title = db.Column(db.String(255), nullable=False)
 | 
						|
    author = db.Column(db.String(128), nullable=False)
 | 
						|
    publisher = db.Column(db.String(128), nullable=True)
 | 
						|
    category_id = db.Column(db.Integer, db.ForeignKey('categories.id'), nullable=True)
 | 
						|
    tags = db.Column(db.String(255), nullable=True)
 | 
						|
    isbn = db.Column(db.String(32), unique=True, nullable=True)
 | 
						|
    publish_year = db.Column(db.String(16), nullable=True)
 | 
						|
    description = db.Column(db.Text, nullable=True)
 | 
						|
    cover_url = db.Column(db.String(255), nullable=True)
 | 
						|
    stock = db.Column(db.Integer, default=0)
 | 
						|
    price = db.Column(db.Numeric(10, 2), nullable=True)
 | 
						|
    status = db.Column(db.Integer, default=1)  # 1:可用, 0:不可用
 | 
						|
    created_at = db.Column(db.DateTime, nullable=False, default=datetime.now)
 | 
						|
    updated_at = db.Column(db.DateTime, nullable=False, default=datetime.now)
 | 
						|
 | 
						|
    # 添加与 InventoryLog 的关系
 | 
						|
    inventory_logs = db.relationship('InventoryLog', backref='book', lazy='dynamic')
 | 
						|
 | 
						|
    def __repr__(self):
 | 
						|
        return f'<Book {self.title}>'
 |