多对多的定义可以使用关联表,或者重新定义一个模型,通过模型定义多对多的自引用在flask web开发书里有讲到,这里主要演示用关联表定义的方法。

from flask_sqlalchemy import SQLAlchemy
from flask import Flask app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
follows=db.Table('follows',
db.Column('follower_id',db.Integer,db.ForeignKey('users.id')),
db.Column('followed_id',db.Integer,db.ForeignKey('users.id')))
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), unique=True, index=True) followers=db.relationship('User',
secondary=follows,
primaryjoin=id==follows.c.followed_id,
secondaryjoin=id==follows.c.follower_id,
backref=db.backref('followed',lazy='dynamic'),
lazy='dynamic')
u1,u2=User(username='u1'),User(username='u2')
u1.followed.append(u2)
print "u1 following :",u1.followed[0].username
print "u2 followers :",u2.followers[0].username

表中定义了关注的人,和粉丝两个字段。主要需要设置primaryjoin跟secondaryjoin参数

最新文章

  1. bzoj 2738 矩阵乘法
  2. 阿里云分布式关系数据库DRDS笔记
  3. Linux--01入门
  4. 09-FZ6R 白色
  5. BZOJ1798: [Ahoi2009]Seq 维护序列seq
  6. jquery学习笔记-----事件和动画
  7. 第十八篇:在SOUI中实现PreTranslateMessage
  8. win7 安装Redis
  9. Activity 与ListActivity的区别
  10. Vim/Vi常用操作(第二版)
  11. IDEA或者WebStorm关闭JS文件的黄色提示
  12. Spring_xml方式开发
  13. c#之如何操作excel
  14. 002-MVC架构,贫血的领域模型、spring mvc,webhars使用
  15. Router pipeline
  16. main函数中如何等待协程运行完毕
  17. 简单的Django实现图片上传,并存储进MySQL数据库 案例——小白
  18. Android 加新的页面
  19. [svc][op]ssh交互yes问题解决-expect
  20. PyCharm永久激活

热门文章

  1. Mysql主外键
  2. java面试总躲不过的并发(一): 线程池ThreadPoolExecutor基础梳理
  3. MongoDB关键指标意义&各数值区间意义&部署
  4. javascript window对象常用方法
  5. 全志A33开发板的安卓控制LED-2-JNI基础
  6. CSS 中的 !important 属性
  7. c++——大端序,小端序的排列问题
  8. redis 设置分布式锁要避免死锁
  9. 超详细SQLMap使用攻略及技巧分享
  10. Unity 3D类结构简介