合并JWL,WZY,TRM代码
Change-Id: Ifb4fcad3c06733e1e005e7d8d9403e3561010fb4
diff --git a/Merge/back_wzy/models/post.py b/Merge/back_wzy/models/post.py
new file mode 100644
index 0000000..ab99191
--- /dev/null
+++ b/Merge/back_wzy/models/post.py
@@ -0,0 +1,32 @@
+# models/post.py
+from extensions import db
+from datetime import datetime
+
+# association table for Post <-> Tag
+post_tags = db.Table(
+ 'post_tags',
+ db.Column('post_id', db.Integer, db.ForeignKey('posts.id', ondelete='CASCADE'), primary_key=True),
+ db.Column('tag_id', db.Integer, db.ForeignKey('tags.id', ondelete='CASCADE'), primary_key=True)
+)
+
+class Post(db.Model):
+ __tablename__ = 'posts'
+
+ id = db.Column(db.Integer, primary_key=True)
+ user_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'), nullable=False)
+ topic_id = db.Column(db.Integer, db.ForeignKey('topics.id', ondelete='SET NULL'))
+ type = db.Column(db.Enum('text', 'image', 'video', 'document'), default='text', nullable=False)
+ title = db.Column(db.String(255), nullable=False)
+ content = db.Column(db.Text, nullable=False)
+ media_urls = db.Column(db.JSON)
+ status = db.Column(db.Enum('draft', 'pending', 'published', 'deleted', 'rejected'),
+ default='draft', nullable=False)
+ heat = db.Column(db.Integer, default=0, 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)
+
+ # relationships
+ tags = db.relationship('Tag', secondary=post_tags, backref=db.backref('posts', lazy='dynamic'))
+ behaviors = db.relationship('Behavior', backref='post', lazy='dynamic', cascade='all, delete')
+ comments = db.relationship('Comment', backref='post', lazy='dynamic', cascade='all, delete')