django---一对多和多对多字段的操作训练
建表准备:
django项目models.py建表
from django.db import models
class Myclass(models.Model):
cname = models.CharField(max_length=12)
class Student(models.Model):
sname = models.CharField(max_length=12)
myclass=models.ForeignKey(to='Myclass')
def __str__(self):
return self.sname
class Theacher(models.Model):
tname = models.CharField(max_length=12)
myclass = models.ManyToManyField(to='Myclass')
def __str__(self):
return self.tname
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day66.settings")
import django
django.setup()
from app01.models import Student,Myclass,Theacher
#、查询id=1的班级的所有的学生
#方法1.1、先获取id=1的班级对象反向查找学生对象
# print(Myclass.objects.get(id=1).student_set.all())
# 方法1.2、根据queryset对象反向查找
# print(Myclass.objects.filter(id=1).values('student__sname'))
#方法2、学生对象正向查找班级id=1的学生
# print(Student.objects.filter(myclass__id=1))
#、查找id=2的班级的所有老师
#反向查找基于queryset和对象查找
# print(Myclass.objects.filter(id=2).values('theacher__tname'))
# print(Myclass.objects.get(id=2).theacher_set.all())
# #正向查找
# print(Theacher.objects.filter(myclass__id=2))
#给id=2的班级添加一个id=6的学生,如果学生原本有班级则改成现在班级(学生只能对应一个班级)
# print(Myclass.objects.get(id=2).student_set.add(Student.objects.get(id=6)))
#把所有学生划到1班去
# print(Myclass.objects.get(id=1).student_set.set(Student.objects.all()))
#给id=2的老师添加一个班级
# Theacher.objects.get(id=2).myclass.add(*[2,3])
#把id=2的老师关联的1班清空解除关联关系
# Theacher.objects.get(id=2).myclass.remove(1)
# 把id=2的老师关联的班清空解除关联关系
# Theacher.objects.get(id=2).myclass.clear()
#id = 2的老师现在开设一新班级:PHP
# Theacher.objects.get(id=2).myclass.create(cname='PHP')
#类似方法2先创建课程然后绑定关系
# Myclass.objects.create(cname='GO')
# Theacher.objects.get(id=2).myclass.add(6)
#给id=2的班级添加一个id=3的老师
# Myclass.objects.get(id=2).theacher_set.add(3)
#Myclass.objects.get(id=2).theacher_set.add(Theacher.objects.get(id=3))
#多对多情况add可以直接写id或者对象,一对多的一的那方添加时只能写对象
总结:给一对多添加对象是时,调用者时是一时add只能添加对象,是多的一方是对象和id都可以
django---一对多和多对多字段的操作训练的更多相关文章
- Django 一对多,多对多关系解析
[转]Django 一对多,多对多关系解析 Django 的 ORM 有多种关系:一对一,多对一,多对多. 各自定义的方式为 : 一对一: OneToOneField ...
- django一对多、多对多模型、自关联的建立
# 原创,转载请留言联系 一对多模型 一对多的关系,例如员工跟部门.一个部门有多个员工.那么在django怎么建立这种表关系呢? 其实就是利用外键,在多的一方,字段指定外键即可.例如员工和部门,员工是 ...
- Django ORM、一对一、一对多、多对多、详解
上篇博客也提到这些知识点,可能大家还是不太清楚,这篇博客为大家详细讲解ORM中的几个知识点 1.1首先我们先看一个小案例: #_*_coding:utf-8_*_ from django.db imp ...
- django中的一对一、一对多、多对多及ForeignKey()
参考文章: Django ORM.一对一.一对多.多对多.详解 刘江的博客——关系类型字段 问题: OneToOneField()与ForeignKey()的区别及其使用场景
- django ORM模型表的一对多、多对多关系、万能双下划线查询
一.外键使用 在 MySQL 中,如果使用InnoDB引擎,则支持外键约束.(另一种常用的MyIsam引擎不支持外键) 定义外键的语法为fieldname=models.ForeignKey(to_c ...
- Django 二——models(admin、ORM),一对一、一对多、多对多操作,all、values、value_list的对比
内容概要 1.关系对象映射ORM 2.admin的配置(选修) 3.all().values().value_list()的对比 4.数据库操作(一对一.一对多.多对多) 5.HttpResponse ...
- 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效
数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...
- django xadmin多对多字段过滤(含filter的反向查询)
要实现的功能: 继昨天实现拓展User模型使其得到其上级用户,今天要实现某些模型与用户多对多字段过滤功能. 功能描述:以用户指派功能为例,当前用户将文件指派给多个下级,修改前 程序会将所有用户都显示出 ...
- Django中的ORM介绍,字段以及字段的参数。
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
随机推荐
- 从零开始搭建django前后端分离项目 系列三(实战之异步任务执行)
前面已经将项目环境搭建好了,下面进入实战环节.这里挑选项目中涉及到的几个重要的功能模块进行讲解. celery执行异步任务和任务管理 Celery 是一个专注于实时处理和任务调度的分布式任务队列.由于 ...
- odoo 基于SQL View视图的model类
在做odoo的过程中,会涉及到多表的查询, 尤其是做报表的时候这种情况更甚,这样下来会做很多的关联,不是很方便.odoo提供了一种机制,即基于视图的model类.代码地址在这里. 具体过程如下: 1. ...
- 调整代码生成工具Database2Sharp的Winform界面生成,使其易于列表工具栏的使用。
在Winform界面开发的时候,有时候我们客户喜欢把功能放在列表界面的顶部,这样界面和功能整齐放置,也是一种比较美观的方式,基于这种方式的考虑,改造了代码生成工具的Winform界面生成规则,把增删改 ...
- Groovy语言学习--语法基础(5)
至此groovy语言学习-语法基础就结束了,新的工作已经安排下来,要干活了. 对groovy了解到一定程度之后就可以在java项目中对其进行引入了.为此新建了一个微型的项目,个人觉得千言万语不如代码实 ...
- 在vue2.0中引用element-ui组件库
element-ui是由饿了么团队开发的一套基于 Vue 2.0 的桌面端组件库. 官网:http://element.eleme.io/ 安装 npm i element-ui -S 引用完整的el ...
- Python_生成器函数进阶_39
def generator(): print(123) content = yield 1 #content接收的是send传的值 print('=======',content) print(456 ...
- [options] 未与 -source 1.6 一起设置引导类路径
用ant与eclipse编译Cassandra 1.2.19,出现了“ [options] 未与 -source1.6一起设置引导类路径”的警告,并出现了一些编译错误,提示编译失败,上网找了很 多资料 ...
- 通过爬虫程序深入浅出java 主从工作模型
随手做的爬虫程序在 https://github.com/rli07/master_java/blob/master/spider.zip 可下载. 这是我做的系统学习图, 可以参考一下 系统架 ...
- 2 Modals of necessity
1 情况动词must 和词组have to, need to ,have got to 都表示必须做某事或者要求做某事. need to have to must have got to When ...
- Day 4-7 -configparser模块
此模块用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser. 常用方法: import configparser conf = configpar ...