Django-ORM-多对多关系创建
Django创建多对多外键关系表
- 方法1:自定义多对多关系
class Many_to_many(models.Model): f1 = models.ForeignKey(to='Table1', to_field='id') f2 = models.ForeignKey(to='Table2', to_field='id')
- 方法2:利用Django自动创建多对多关系
class Table1(models.Model): t1 = models.charField(max_length=32) class Table2(models.Model): t2 = models.CharField(max_length=64) f_key = models.ManyToManyField(to='Table1') #创建表时Django会自动创建第三张表来维护多对多关系,表名为Table2_f_key
- 方法一更好一些,可以自己定制第三张表, 方法二无法直接操作第三张表
- 方法二操作第三张表:
- 添加记录:
obj = models.Table2.objects.get(id=1) # 确定记录的Table2_id一列的值为1 obj.f_key.add(2) # 表示往第三张表中添加一条记录,关联Table2的id为1和Table1的id为2的记录 obj.f_key.add(*[1, 2, 3, 4]) # 表示添加 1-1, 1-2, 1-3, 1-4这样的四条记录
- 删除记录:
obj.f_key.remove(2) # 表示移除1-2这样的一条记录 obj.f_key.remove(*[1,2,3,4]) # 表示移除类似的四条记录 obj.f_key.clear() # 表示清除所有和这个对象相关联的记录
- 修改记录:obj.f_key.set([3,5,7]) # 表示将跟1有关的记录替换为1-3, 1-5, 1-7, 数据库中和1有关的记录只剩下这些
- 获取记录:obj.f_key.all() obj.f_key.filter() obj.f_key.filter()f.irst(), 注意,拿到的都是与之关联的表的对象,而不是第三张表的对象
相关文章
- Django基本命令
Django基本命令 打开linux终端直接在终端中输入以下命令即可。 新建一个django project 命令:django-admin.py startproject project-nam
- 17个新手常见Python运行时错误
17个新手常见Python运行时错误 当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误。 当初学 Python
- Python+SQLite真的有用吗?
SQLite是个很简单的数据库,一个文件就可以搞定,存储上千万行的数据也没问题,图形界面程序有很多,管理很方便,用Python可以编程操作,也很简单,一切都似乎很完美。 我导入了几千万行的数据进SQL
- os各种各样的操作系统接口
这个模块提供了一种使用操作系统相关功能的移动方式。如果您只想读取或写入一个文件,请查看open(),如果您想要操作路径,请参见操作os.path模块,如果您想要读取命令行上所有文件中的所有行,请参阅f
- 通过webpy和nginx-with-fastcgi搭建web.py
这一节讲解的是如何使用Nginx和FastCGI搭建Web.py应用 环境依赖的软件包 Nginx 0.8.* or 0.7.* (需要包含fastcgi和rewrite模块)。 Webpy 0.3
随机推荐
- Django基本命令
Django基本命令 打开linux终端直接在终端中输入以下命令即可。 新建一个django project 命令:django-admin.py startproject project-nam
- 17个新手常见Python运行时错误
17个新手常见Python运行时错误 当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误。 当初学 Python
- Python+SQLite真的有用吗?
SQLite是个很简单的数据库,一个文件就可以搞定,存储上千万行的数据也没问题,图形界面程序有很多,管理很方便,用Python可以编程操作,也很简单,一切都似乎很完美。 我导入了几千万行的数据进SQL
- os各种各样的操作系统接口
这个模块提供了一种使用操作系统相关功能的移动方式。如果您只想读取或写入一个文件,请查看open(),如果您想要操作路径,请参见操作os.path模块,如果您想要读取命令行上所有文件中的所有行,请参阅f
- 通过webpy和nginx-with-fastcgi搭建web.py
这一节讲解的是如何使用Nginx和FastCGI搭建Web.py应用 环境依赖的软件包 Nginx 0.8.* or 0.7.* (需要包含fastcgi和rewrite模块)。 Webpy 0.3