合并JWL,WZY,TRM代码
Change-Id: Ifb4fcad3c06733e1e005e7d8d9403e3561010fb4
diff --git a/Merge/back_wzy/models/user.py b/Merge/back_wzy/models/user.py
new file mode 100644
index 0000000..f27e7d3
--- /dev/null
+++ b/Merge/back_wzy/models/user.py
@@ -0,0 +1,68 @@
+# models/user.py
+
+from datetime import datetime
+from extensions import db
+
+# 关联表:用户关注关系
+follows = db.Table(
+ 'follows',
+ db.Column('follower_id', db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'), primary_key=True),
+ db.Column('followee_id', db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'), primary_key=True),
+ db.Column('created_at', db.DateTime, default=datetime.utcnow, nullable=False)
+)
+
+class User(db.Model):
+ __tablename__ = 'users'
+
+ id = db.Column(db.Integer, primary_key=True)
+ username = db.Column(db.String(50), unique=True, nullable=False)
+ password = db.Column(db.String(255), nullable=False)
+ email = db.Column(db.String(100), unique=True, nullable=False)
+ avatar = db.Column(db.String(255))
+ role = db.Column(db.Enum('user', 'admin'), default='user', nullable=False)
+ bio = db.Column(db.String(255))
+ status = db.Column(db.Enum('active', 'banned', 'muted'), default='active', nullable=False)
+ created_at = db.Column(db.DateTime, default=datetime.utcnow, nullable=False)
+ updated_at = db.Column(
+ db.DateTime,
+ default=datetime.utcnow,
+ onupdate=datetime.utcnow,
+ nullable=False
+ )
+
+ # 用户发布的帖子
+ posts = db.relationship(
+ 'Post',
+ backref='author',
+ lazy='dynamic',
+ cascade='all, delete-orphan'
+ )
+
+ # 用户的互动行为
+ behaviors = db.relationship(
+ 'Behavior',
+ backref='user',
+ lazy='dynamic',
+ cascade='all, delete-orphan'
+ )
+
+ # 用户发表的评论
+ comments = db.relationship(
+ 'Comment',
+ backref='user',
+ lazy='dynamic',
+ cascade='all, delete-orphan'
+ )
+
+ # 用户关注的对象列表
+ following = db.relationship(
+ 'User',
+ secondary=follows,
+ primaryjoin=(id == follows.c.follower_id),
+ secondaryjoin=(id == follows.c.followee_id),
+ backref=db.backref('followers', lazy='dynamic'),
+ lazy='dynamic'
+ )
+
+ def __repr__(self):
+ return f"<User {self.username!r} id={self.id}>"