模型中relationship的使用笔记

模型.PY

class User(db.Model):# __tablename__ = 'user1' #定义表名id = db.Column(db.Integer, primary_key=True, autoincrement=True)username = db.Column(db.String(10), nullable=True)password = db.Column(db.String(64), nullable=True)phone = db.Column(db.String(11), nullable=True, unique=True)rdatetime = db.Column(db.DateTime, default=datetime.now)isdelete = db.Column(db.Boolean, default=False)# 代码引用articles = db.relationship('Article', backref='user')  # 反向引用comments = db.relationship('Comment', backref='users',secondary ='comment_user') # 反向引用 下方注释详解def __str__(self):return self.username
class Comment(db.Model):__tablename__ = 'comment'id = db.Column(db.Integer, primary_key=True, autoincrement=True)content = db.Column(db.String(255), nullable=False)cdatetime = db.Column(db.DateTime, default=datetime.now())# user_id = db.Column(db.Integer, db.ForeignKey(User.id), nullable=False)article_id = db.Column(db.Integer, db.ForeignKey(Article.id), nullable=False)def __str__(self):return self.content
class Comment_user(db.Model):__tablename__ = 'comment_user'id = db.Column(db.Integer, primary_key=True, autoincrement=True)user_id = db.Column(db.Integer, db.ForeignKey(User.id), nullable=False)comment_id = db.Column(db.Integer, db.ForeignKey(Comment.id), nullable=False)

articles = db.relationship('Article', backref='user')  # 反向引用
comments = db.relationship('Comment', backref='users',secondary ='comment_user') 

在视图中操作橙色方法1和红色方法2部分时',secondary ='comment_user',

这句话使得关系表中的数据自动添加,两种关系用法:

# user.comments.append(comment)

#  comment1.users.append(user1)

# 评论文章
@article_bp.route('/comment', endpoint='comment', methods=['POST'])
def article_comment():
    content = request.form.get('content')
    user_id = request.form.get('author')
    article_id = request.form.get('aid')
    # print(content,user_id,article_id)

user = User.query.get(user_id)
    comment = Comment()
    comment.content = content
    comment.article_id = article_id

user.comments.append(comment)    #relationship中的关系
    db.session.commit()

comment1 = Comment()
    comment1.content='aaaaaa'
    comment1.article_id = article_id

user1 = User.query.get(3)
    comment1.users.append(user1)

db.session.add(comment)
    db.session.commit()

url = url_for('article.detail') + '?aid=' + str(article_id)
    return redirect(url)

视图.PY

@article_bp.route('/comment', endpoint='comment',methods=['POST'])
def article_comment():'''收: article_id content  user_id创建Comment对象  保存数据操作关系表(comment_user): user_id   comment_id送:  跳转到详情页'''content= request.form.get('content')user_id = request.form.get('author')article_id = request.form.get('aid')print(content,user_id,article_id)user = User.query.get(user_id)comment = Comment()comment.content = contentcomment.article_id  = article_iduser.comments.append(comment)         #user.comments相当于是一个列表#当调用comments 时直接等于进入到comment() 然后加入comment实例db.session.commit()url = url_for('article.detail')+'?aid='+str(article_id)return redirect(url)

user.comments.append(comment)         
    #user.comments相当于是一个列表
    #当调用comments 时直接等于进入到comment() 然后加入comment实例

删除:
  先找到对象  
 student.courses.remove(对象)   ---》 自动删除关系表的记录

flask模型中【外键】relationship的使用笔记相关推荐

  1. Flask Web中的db.relationship()

    转载链接来自: https://www.jianshu.com/p/dbeec464c3ad 本文主要介绍如何使用flask操作数据库. 数据库按照一定规则保存程序数据,程序再发起查询取回所需的数据. ...

  2. 关于er模型中的identifying relationship or non-identifying relationship

    最近,主要负责项目管理和领域模型设计方面的工作,昨天在将UML类图转换为ER模型的时候,发现有identifying relationship or non-identifying relations ...

  3. 中去掉外键_【Java笔记】035天,MySQL中的增删改查

    学习Java的第35天. 今天天除了学习MySQL中的各种约束,MySQL中DML的操作,还有MySQL查询语句ds-- MySQLdz中d的约束有: • 非空约束(not null) • 唯一性约束 ...

  4. sqlalchemy外键和relationship查询

    前面的文章中讲解了外键的基础知识和操作,上一篇文章讲解了sqlalchemy的基本操作.前面两篇文章都是作为铺垫,为下面的文章打好基础.记得初一时第一次期中考试时考的不好,老爸安慰我说:"学 ...

  5. mysql支持UUID做外键_多表外键下将普通的id主键更新为uuid主键

    多表外键下将普通的id主键更新为uuid主键 2019-05-20 02:45:37 来源: 晴天小雨 0 摘要:在多表外键影响和保证数据不删除的前提下,借助Flask-sqlalchemy插件及SQ ...

  6. php设置外键约束,关于php:禁用教义外键约束

    我在其中一个模型上有关系: /** * @ORM\ManyToOne(targetEntity="Page", cascade="persist") * @OR ...

  7. think php5关联模型,thinkphp5的模型中使用关联

    有以下两个表 artitcle表(表示文章) article的主键是id,外键是cateid,cateid对应于cate表的主键id. cate表(表示栏目) cate表的主键是id. 这两张表表示, ...

  8. 外键SQL语句的编写及实例

    目录 外键SQL语句的编写 1.外键约束作用 2.对于已经存在的字段添加外键约束 3.在创建数据表时设置外键约束 4.删除外键约束 5.小结 实战演练 - 分组和聚合函数的组合使用 1.数据准备 2. ...

  9. mysql外键更新规则_sql server 外键 更新(删除)规则

    以前用数据库,一般都建表关系,但是这些关系建好了往往没有用到. 这次写一个项目,涉及到多表的外键约束和级联删除的问题,才研究了一下. 用的vs2005里面自带的SqlExpress,在VS里面作数据库 ...

最新文章

  1. 解决cocos2dx 3.x 导入cocostudio的ui界面出现错位问题
  2. 去除菜单项的加速键--‘’符号
  3. RxJava使用(四)变换
  4. 什么样的人不适合做SEO呢
  5. day15 python-03 列表,元组,字典
  6. Java Machine Learning Tools Libraries--转载
  7. AnyChat SDK支持哪些开发语言?
  8. 【bzoj5037】[Jsoi2014]电信网络 最大权闭合图
  9. 波特率、发送/接收时钟、波特率因子、传输距离
  10. GoogleTest测试框架介绍(一)
  11. Android爬坑之旅之FileProvider(Failed to find configured root that contains)
  12. 魔乐MLDN李兴华主讲Oracle视频教程
  13. PostgreSQL 创建数据库
  14. 栋的月结 | 第三回合(定期更新、动态、架构、云技术、算法、后端、前端、收听/收看、英文、书籍、影视、好歌、新奇)[含泪总结.. 憋泪分享!]
  15. 按键截屏功能源码流程讲解
  16. 2018再见|2019你好
  17. 85D - Sum of Medians
  18. 计算机能显示u盘吗,U盘插到电脑上,能检测到这设备,但是在“我的电脑”里没有显示U盘...
  19. CLIP论文阅读、zero-shot实验、linear prob实验记录
  20. 38、EST序列拼接流程

热门文章

  1. 在ffmpeg中加入x264模块
  2. MyBatis : Example 条件查询 in 用法
  3. IDEA配置jdk (SDK)
  4. 狗窝里的小日子- 7 ...
  5. Flask-1-05-CookieSession
  6. 主席树的各类模板(区间第k大数【动,静】,区间不同数的个数,区间=k的个数)...
  7. 项目微管理 - 总结也是新的开始
  8. Safengine Android so加密
  9. Andorid获取状态栏高度
  10. 如何在WinForm中发送HTTP请求