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)模式是一种为了解决面向对象与关系数据 ...
随机推荐
- 1、话说linux内核
1.内核和发行版的区别 到底什么是操作系统 linux.windows.android.ucos就是操作系统 操作系统本质上是一个程序,由很多个源文件构成,需要编译连接成操作系统程序(vmlinz.z ...
- UINavigationController - BNR
继续上篇UITableView的编辑操作. 当你初始化一个UINavigationController对象时,它将拥有一个根视图控制器,即UIViewController.根视图控制器一直存在于sta ...
- HTML+CSS之盒子模型
一.元素分类 CSS中html的标签元素大体分为三种类型 1.块状元素 @特点: #每个块级元素都从新的一行开始,并且其后的元素也另起一行(一个块级元素独占一行) #元素的高度.宽度.行高以及顶和底边 ...
- 【php增删改查实例】第二十五节 - 在main.php中显示头像
在用户成功上传头像以后,用户登录系统,应该能够看到自己的头像,本节演示如何在这个地方: 添加用户头像. 1.用DIV做: border-radius:50% background:url(xxx.jp ...
- java 基础04 重写
- 七、Json格式的对象都可以通过遍历来获得里面的value值
- Python—randonm模块介绍
random是python产生伪随机数的模块 >>> random.randrange(1,10) #返回1-10之间的一个随机数,不包括10 >>> random ...
- java异常Exception
学习笔记: 一.程序的异常:Throwable 严重问题:Error ,我们不处理.这种问题一般很严重,不如内存溢出 问题:Exception 编译问题:不是RuntimeException异常.必须 ...
- 使用Dockerfile来构建镜像
Dockerfile原理 创建Dockerfile Dockerfile实例 Dockerfile指令 注释 FROM MAINTAINER RUN ADD WORKDIR ENV USER COPY ...
- 07-nodejs中npm的使用
NPM是什么? 简单的说,npm就是JavaScript的包管理工具.类似Java语法中的maven,gradle,python中的pip. 安装 傻瓜式的安装. 第一步:打开https://node ...