模型内容 relationship 1对多

需求: 用户进行留言,也要可以通过留言找到对应的用户
这样用户和留言的关系:1对多

1、创建模型,即创建表

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()class UserInfo(db.Model):# 因为I是大写,所以数据库自动生成时,会加"_",数据库名变成:user_info# 自定义表名,如果不写,默认模型名即上面的:user_info# __tablename__ = 'userinfo'id = db.Column(db.Integer, primary_key=True, autoincrement=True) # 可查看Column的__init__参数内容,可填参数有很多username = db.Column(db.String(50), nullable=False)password = db.Column(db.String(255), nullable=False)phone = db.Column(db.String(11), unique=True, nullable=False)comments = db.relationship('Comment', backref='user')  # backref 是本函数的名字,用于其他地方引用,这个可以先忽略,因为关联的是评论表,本次内容没有class MessageBoard(db.Model):# 管理用户留言id = db.Column(db.Integer, primary_key=True, autoincrement=True)content = db.Column(db.String(255), nullable=False)create_at = db.Column(db.DateTime, default=datetime.now)user_id = db.Column(db.Integer, db.ForeignKey('user_info.id')) # 外键user = db.relationship('User', backref='messages') # 用户表关联留言表,

relationship 和外键不一样,外键是真实存在于表结构中的,而relationship只是存在逻辑系统中,在物理上或表内容结构上是找不到的对应关系的,类似于内存中,只是在当前flask中可以通过留言表找到用户表

注意:relationship 只能单向关联,不能双向关联,否则会报错,即模型(UserInfo)和(MessageBoard)不能都相互关联对方,可以关联其它表。

2、视图中使用

# view.py......# ---->>>: 留言板
@user_bp.route('/messages_board', methods=['GET'])
def messages_board():uid = session.get('uid')user = User.query.get(uid)page = int(request.args.get('page', 1))pagination = MessageBoard.query.filter().order_by(-MessageBoard.create_at) \.paginate(page=page, per_page=5)# pagination 根据条件取到留言表的对象,是个列表return render_template('user/messages_board.html',user=user,pagination=pagination)

3、模板中使用

<!--messages_board.html-->{% extends 'base.html' %}{% block newcontent %}<!--留言板的显示--><div id="comment_item"><!--判断评论列表对象有没有值-->{% if pagination.items %}<!--循环评论列表对象,取出每一个对象-->{% for message in pagination.items %}<div class="item"><div class="item_left"><!--应用relationship:通过message对象找到与之关联的user表,然后再通过user表找到用户头像,外键的话没有这么方便,要先找到对应的外键id,再去user表去查询找到icon--><img src="{% if message.user.icon %}{{ url_for('static', filename=message.user.icon) }}{% else %}{{ url_for('static', filename='images/touxiang.png') }}{% endif %} " alt="" class="message-image"></div><div class="item_right"><div><!--应用relationship:通过message对象找到关联的user表,然后再通过user表找到用户名-->{% if message.user.username %}<span>{{ message.user.username }}</span>{% else %}<span>匿名用户</span>{% endif %}<!--通过message对象找到留言的时间--><span>{{ message.create_at }}</span></div><div><!--通过message对象找到留言的内容--><div>{{ message.content }}</div></div></div></div>{% endfor %}{% else %}<div class="item" style="color: gray">当前还没有留言哦~~~~</div>{% endif %}</div>{% endblock %}

Flask-7、模型相关之relationship相关推荐

  1. Flask 自定义模型类

    自定义模型类 本篇章介绍Flask自定义模型类的概念,以及写一个快速入门的示例,基本内容如下: 定义两个模型类,并创建数据库表 创建数据,写入数据库 编写模板以及视图函数,在页面展示数据 定义模型 模 ...

  2. ML:机器学习中与模型相关的一些常见的判断逻辑(根据自调整阈值计算阳性率)

    ML:机器学习中与模型相关的一些常见的判断逻辑(根据自调整阈值计算阳性率) 目录 机器学习中与模型相关的一些常见的判断逻辑(根据自调整阈值计算阳性率)

  3. ML之XGBoost:XGBoost算法模型(相关配图)的简介(XGBoost并行处理)、关键思路、代码实现(目标函数/评价函数)、安装、使用方法、案例应用之详细攻略

    ML之XGBoost:XGBoost算法模型(相关配图)的简介.关键思路.代码实现(目标函数/评价函数).安装.使用方法.案例应用之详细攻略 目录 XGBoost算法模型(相关配图)的简介 1.XGB ...

  4. 【杂谈】模型设计书看完了感觉不过瘾?这些拓展模型相关内容值得你关注一下...

    相信许多朋友都看过我这本模型设计的书籍了,内容涵盖了模型的深度宽度理解,残差模型,分组模型,多尺度模型,多输入模型,时序模型,注意力机制与动态模型,GAN模型等领域,详情可以阅读: 言有三新书来袭!业 ...

  5. 超大规模智能模型相关工作总结:编程实现框架、算法模型、微调技术和应用...

    ©PaperWeekly 原创 · 作者 | 金金 单位 | 阿里巴巴研究实习生 研究方向 | 推荐系统 简介 近日,超大规模的智能模型越来越受到大家的关注,但是仅仅依赖于超大的计算资源并不足以完成这 ...

  6. 用flask部署模型

    模型部署:用flask部署模型 1.https://zhuanlan.zhihu.com/p/35879835 2.https://blog.keras.io/building-a-simple-ke ...

  7. demo:flask进行模型部署 | ros接收点云流 | Web接收三路视频流及局部刷新——>显示效果展示

    本文展示最近完成的一个项目的一个小demo. 后端用flask进行搭建并部署深度学习模型. 创建三个路由接收三路实时的视频流,第四个窗口利用ros3djs创建三维视窗,按照topic接收实时发布的点云 ...

  8. 一文让你了解生成模型相关的解码Tricks

    一文让你了解生成模型相关的解码Tricks 本文是笔者花费闲暇时间根据工作经历以及阅读文献总结的,如果对于屏幕前的隔着读者有些许帮助,真是欣慰之至.当然,各位读者的支持也是笔者写作的动力.麻烦一键三连 ...

  9. 电机标幺化、PI标幺化、锁相环PLL标幺化 详解电机模型相关标幺化处理

    电机标幺化.PI标幺化.锁相环PLL标幺化 详解电机模型相关标幺化处理 电流环PI控制器的标幺化处理 观测器中PLL锁相环的标幺化处理 采样时间处理 这是文档,不是代码,文档中的代码均为引用举例子的 ...

最新文章

  1. 一次遍历等概率选取字符串中的某个字符
  2. TCExam开源在线考试系统
  3. 灵魂一问-如何彻底防止APK反编译?成功定级腾讯T3-2
  4. html页面text固定长度,HTML中input type=text和type=password 显示的长度不一样
  5. Tensorflow代码转pytorch代码 函数的转换
  6. html js css如何关联_会html+css+js就能把前端项目发布到多个平台
  7. 【转】火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版...
  8. AngularJS的学习--ng-show/ng-hide/ng-if和ng-switch
  9. 搜索引擎设计实用教程(1)-以百度为例 之一:查询处理以及分词技术
  10. 集成电路设计——闩锁效应
  11. matlab计算四元方程解,求解四元二次方程,用matlab
  12. 安卓手机测评_民宿预订Airbnb、途家民宿、小猪、木鸟短租、蚂蚁短租五大平台测评...
  13. bash shell脚本实例合集
  14. 面试关于网络的那些事
  15. 素雅的登录界面,简单而优雅
  16. 2019年的最后一天,你会想些啥?
  17. 逗号分隔 整形 数字 输入 读取方法 C++
  18. python 爬取24小时天气数据
  19. 计算机程序是怎样运行的
  20. 【数据分析】认识Pandas:DataFrame和Series结构、属性

热门文章

  1. oracle 关系 表 视图_oracle重要的动态视图与基表的对应关系
  2. Xtreme Suite Pro使用教程:浏览器插件之ActiveX开发
  3. 姨妈记录软件智能测试周期,‎App Store 上的“Monthly Cycles - 大姨妈周期跟踪及计算器”...
  4. Android应用启动之从Launcher拉起APP(三)
  5. PHP 利用json_decode解析json为null问题解决
  6. 微博鸿蒙系统,如何看待华为P50未出,却又迎来华... - @柏铭007 的微博精选 - 微博国际站...
  7. [Objective-C]第二天
  8. iphone 屏幕大小
  9. 迪亚-土地利用现状统计
  10. 撸了几行骚代码,解放了双手