这代码中question=question为什么传递一个question,一个question类对象呢?
class AnswerComment(db.Model): """ 回答的评论 """ __tablename__ = 'qa_answer_comment' id = db.Column(db.Integer, primary_key=True) # 主键 # 评论内容 content = db.Column(db.String(512), nullable=False) # 赞同人数 love_count = db.Column(db.Integer, default=0) # 评论是否公开 is_public = db.Column(db.Boolean, default=True) # 逻辑删除 is_valid = db.Column(db.Boolean, default=True) # 创建时间 created_at = db.Column(db.DateTime, default=datetime.now) # 最后修改的时间 updated_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) # 回复ID reply_id = db.Column(db.Integer, db.ForeignKey('qa_answer_comment.id'), nullable=True) # 关联用户 user_id = db.Column(db.Integer, db.ForeignKey('accounts_user.id')) # 关联答案 answer_id = db.Column(db.Integer, db.ForeignKey('qa_answer.id')) # 关联问题 q_id = db.Column(db.Integer, db.ForeignKey('qa_question.id')) # 建立与用户的一对多属性 user = db.relationship('User', backref=db.backref('answer_comment_list', lazy='dynamic')) # 建立与答案的一对多属性 answer = db.relationship('Answer', backref=db.backref('answer_comment_list', lazy='dynamic')) # 建立与问题的一对多属性 question = db.relationship('Question', backref=db.backref('question_comment_list', lazy='dynamic'))
@qa.route('/comments/<int:answer_id>', methods=['GET', 'POST']) def comments(answer_id): """ 评论 """ answer = Answer.query.get(answer_id) if request.method == 'POST': # 添加评论 try: if not current_user.is_authenticated: result = {'code': 1, 'message': '请登录'} return jsonify(result), 400 # 1. 获取数据 content = request.form.get('content', '') # 2. 保存到数据库 question = answer.question comment_obj = AnswerComment(content=content, user=current_user, answer=answer, question=question ) db.session.add(comment_obj) db.session.commit() return '', 201 except Exception as e: result = {'code': 1, 'message': '服务器正忙,请稍后重试'} return jsonify(result), 400 else: # 获取评论列表 pass
class Answer(db.Model): """ 问题的回答 """ __tablename__ = 'qa_answer' id = db.Column(db.Integer, primary_key=True) # 主键 # 回答的内容详情 content = db.Column(db.Text, nullable=False) # 逻辑删除 is_valid = db.Column(db.Boolean, default=True) # 创建时间 created_at = db.Column(db.DateTime, default=datetime.now) # 最后修改的时间 updated_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) # 关联用户 user_id = db.Column(db.Integer, db.ForeignKey('accounts_user.id')) # 关联问题 q_id = db.Column(db.Integer, db.ForeignKey('qa_question.id')) # 建立与用户的一对多属性 user = db.relationship('User', backref=db.backref('answer_list', lazy='dynamic')) # 建立与问题的一对多属性 question = db.relationship('Question', backref=db.backref('answer_list', lazy='dynamic')) @property def love_count(self): """ 点赞的数量 """ return self.answer_love_list.count()
class Question(db.Model): """ 问题 """ __tablename__ = 'qa_question' id = db.Column(db.Integer, primary_key=True) # 主键 # 问题标题 title = db.Column(db.String(128), nullable=False) # 问题描述 desc = db.Column(db.String(256)) # 问题图片 img = db.Column(db.String(256)) # 问题详情 content = db.Column(db.Text, nullable=False) # 浏览人数 view_count = db.Column(db.Integer, default=0) # 逻辑删除 is_valid = db.Column(db.Boolean, default=True) # 排序 reorder = db.Column(db.Integer, default=0) # 创建时间 created_at = db.Column(db.DateTime, default=datetime.now) # 最后修改的时间 updated_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) # 关联用户 user_id = db.Column(db.Integer, db.ForeignKey('accounts_user.id')) # 建立与用户的一对多属性,user.question_list user = db.relationship('User', backref=db.backref('question_list', lazy='dynamic')) @property def get_img_url(self): return 'medias/' + self.img if self.img else '' @property def comment_count(self): """ 评论数量 """ return self.question_comment_list.filter_by(is_valid=True).count() @property def follow_count(self): """ 关注数量 """ return self.question_follow_list.filter_by(is_valid=True).count() @property def answer_count(self): return self.answer_list.filter_by(is_valid=True).count() @property def tags(self): """ 文章的标签 """ return self.tag_list.filter_by(is_valid=True) @property def love_count(self): """ 点赞的数量 """ return self.question_love_list.count()
这代码中question=question为什么传递一个question,一个question类对象呢?
6
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小猿
2023-12-04 12:51:52
同学,你好!等号左侧的question 是个变量名可以随意写名,右侧等号的question 代表着与当前类(也可以理解为表) 的关系是一对多的关系,如下图是Question 与 Answer两个表之间的关系是一对多的关系,即一个问题可以有多个回答
class Question(db.Model): """ 问题 """ __tablename__ = 'qa_question' id = db.Column(db.Integer, primary_key=True) # 主键 title = db.Column(db.String(128), nullable=False) desc = db.Column(db.String(256)) img = db.Column(db.String(256)) content = db.Column(db.Text, nullable=False) view_count = db.Column(db.Integer, default=0) is_valid = db.Column(db.Boolean, default=True) reorder = db.Column(db.Integer, default=0) created_at = db.Column(db.DateTime, default=datetime.now) updated_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) user_id = db.Column(db.Integer, db.ForeignKey('accounts_user.id')) class Answer(db.Model): """ 问题的回答 """ __tablename__ = 'qa_answer' id = db.Column(db.Integer, primary_key=True) # 主键 content = db.Column(db.Text, nullable=False) is_valid = db.Column(db.Boolean, default=True) created_at = db.Column(db.DateTime, default=datetime.now) updated_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) user_id = db.Column(db.Integer, db.ForeignKey('accounts_user.id')) q_id = db.Column(db.Integer, db.ForeignKey('qa_question.id')) user = db.relationship('User', backref=db.backref('answer_list', lazy='dynamic')) question = db.relationship('Question', backref=db.backref('answer_list', lazy='dynamic'))
question 表通过id 与answer表的q_id 相关联,question 表id 为1的记录在answer表中有两个回答,即q_id 值为1的所有记录,也就是answer表中id 为1和3的记录
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星