建表准备:

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---一对多和多对多字段的操作训练的更多相关文章

  1. Django 一对多,多对多关系解析

    [转]Django 一对多,多对多关系解析   Django 的 ORM 有多种关系:一对一,多对一,多对多. 各自定义的方式为 :        一对一: OneToOneField         ...

  2. django一对多、多对多模型、自关联的建立

    # 原创,转载请留言联系 一对多模型 一对多的关系,例如员工跟部门.一个部门有多个员工.那么在django怎么建立这种表关系呢? 其实就是利用外键,在多的一方,字段指定外键即可.例如员工和部门,员工是 ...

  3. Django ORM、一对一、一对多、多对多、详解

    上篇博客也提到这些知识点,可能大家还是不太清楚,这篇博客为大家详细讲解ORM中的几个知识点 1.1首先我们先看一个小案例: #_*_coding:utf-8_*_ from django.db imp ...

  4. django中的一对一、一对多、多对多及ForeignKey()

    参考文章: Django ORM.一对一.一对多.多对多.详解 刘江的博客——关系类型字段 问题: OneToOneField()与ForeignKey()的区别及其使用场景

  5. django ORM模型表的一对多、多对多关系、万能双下划线查询

    一.外键使用 在 MySQL 中,如果使用InnoDB引擎,则支持外键约束.(另一种常用的MyIsam引擎不支持外键) 定义外键的语法为fieldname=models.ForeignKey(to_c ...

  6. Django 二——models(admin、ORM),一对一、一对多、多对多操作,all、values、value_list的对比

    内容概要 1.关系对象映射ORM 2.admin的配置(选修) 3.all().values().value_list()的对比 4.数据库操作(一对一.一对多.多对多) 5.HttpResponse ...

  7. 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效

    数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...

  8. django xadmin多对多字段过滤(含filter的反向查询)

    要实现的功能: 继昨天实现拓展User模型使其得到其上级用户,今天要实现某些模型与用户多对多字段过滤功能. 功能描述:以用户指派功能为例,当前用户将文件指派给多个下级,修改前 程序会将所有用户都显示出 ...

  9. Django中的ORM介绍,字段以及字段的参数。

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

随机推荐

  1. 从零开始搭建django前后端分离项目 系列一(技术选型)

    前言 最近公司要求基于公司的hadoop平台做一个关于电信移动网络的数据分析平台,整个项目需求大体分为四大功能模块:数据挖掘分析.报表数据查询.GIS地理化展示.任务监控管理.由于页面功能较复杂,所以 ...

  2. Materialized View模式

    Materialized-View模式是在要求数据格式不利于查询操作的情况下,根据多个数据仓库的数据生成预生成的视图的一种模式.这种模式可以帮助支持高效的查询和数据提取,提高应用程序的性能. 问题 在 ...

  3. html设置 hight100%问题

    Web浏览器在计算有效宽度时会考虑浏览器窗口的打开宽度.如果你不给宽度设定任何缺省值,那浏览器会自动将页面内容平铺填满整个横向宽度.但是高度的计算方式完全不一样.事实上,浏览器根本就不计算内容的高度, ...

  4. Mysql多实例之mysql服务脚本

    1. #init port=3306 mysql_user="root" mysql_pwd="cancer" CmdPath="/applicati ...

  5. Python魔法函数

    python中定义的以__开头和结尾的的函数.可以随意定制类的特性.魔法函数定义好之后一般不需要我们自己去调用,而是解释器会自动帮我们调用. __getitem__(self, item) 将类编程一 ...

  6. Applese 的毒气炸弹 G 牛客寒假算法基础集训营4(图论+最小生成树)

    链接:https://ac.nowcoder.com/acm/contest/330/G来源:牛客网 Applese 的毒气炸弹 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262 ...

  7. Makes And The Product CodeForces - 817B (思维+构造)

    B. Makes And The Product time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  8. 使用faker去构造一个User-Agent

    faker可以仿造各种各样的信息,可以使用faker去构造一个User-Agent from faker import Factory f = Factory.create() 'User-Agent ...

  9. SDK安装详解以及adb的来源

    首先,下载Android SDK Tools,翻过墙的朋友可以去Google Android的官网上下载(http://developer.android.com/sdk/index.html) 选择 ...

  10. haoop笔记

    : //:什么是hadoop? hadoop是解决大数据问题的一整套技术方案 :hadoop的组成? 核心框架 分布式文件系统 分布式计算框架 分布式资源分配框架 hadoop对象存储 机器计算 :h ...