django在开发中取消外键约束的实现


Posted in Python onMay 20, 2020

我就废话不多说了,大家还是直接看代码吧!

# 在setting设置外键
'OPTIONS': {
   "init_command": "SET foreign_key_checks = 0;",
  }

补充知识:django-给外键关系传值,删除外键关系

反查:

在表关系里 related_name = '反查name',自己不设置,django也会默认设置为class的小写名字+_set , ex: book_set.

一对一关系赋值:

class ModelStudy(View):
 ''' ClassRoom和ClassNumber是一对一关系,给外键传值 '''
 def get(self, request):
  ''' 两种方法 教室ClassRoom和教室编号ClassNumber 外键字段在django类里名(room_number)在数据库名(room_number_id) '''

 # 一.1赋值对象给外键字段
  # room_number = ClassNumber.objects.filter(class_number__exact='003')[0] # d对List切片
  # c = ClassRoom()
  # c.room_number = room_number
  # c.save()
  # 1.2新增数据并赋值对象给新增字段
  room_number = ClassNumber.objects.filter(class_number__exact='003')[0]
  print room_number
  ClassRoom.objects.create(name="python教室", room_number=room_number) # 新增数据



 # 二:获取外键字段(数据库的外键字段名字room_number_id)的值,将相对应的值直接赋值给该外键字段


 class_number = ClassNumber.object.get("id=1").room_number # 获取教室编号具体值 ‘001'


 c = ClassRoom.object.filter(id=1)[0]


 c.room_number_id = class_number # 将‘001'复制给数据库外键字段 外键字段在django类里名(room_number)在数据库名(room_number_id)


 c.save()
return HttpResponse("ojbk")

多对一:

类似一对一,只是 ''多''的一方可以对应多个"一"方。 ps: "一"放通过反查,会有不止一条数据。可以通过+all()获取。

假设两张表:Book书 + Reply评论 表。为多对一,Reply为"多''. 那么"一",Book反查是,Book.object.get(id=1).reply_set.all() # reply_set是不设置related_name时,django自己设置的

多对多:

class ModelStudy(View):
 ''' Students和Teachers是多对多关系 '''
 def get(self, request):
  ''' 两种情况 '''
  # 主类(外键所在类)数据已经存在
  # t = Teachers.objects.get(id=1)
  # s = Students.objects.get(name="学生3")
  # s.teacher.add(t) # 多对多需要add数据
  # s.save()

  # 主类数据不存在,新增数据时, 需先save()
  t = Teachers.objects.get(id=1)
  s = Students(name='xiaodong1', age=10, gender="男")
  s.save() # 先存新增数据
  s.teacher.add(t) # 再给新增数据添加多对多关系 可以add(t, t1, t2)多个对应的关系
  s.save()
  return HttpResponse("ojbk")

删除关系数据

先查出对应的关系数据,在删除

class ModelStudy(View):
 ''' Students和Teachers是多对多关系 '''
 def get(self, request):
  ''' 两种情况 '''
  s = Students.objects.get(id=1)
  t = s.teacher.all() # 多对多 s.teacher是一个<QuerySet>list对象 通过反查取值需要all(),get(),filter之类的
  for x in t: # 删除所有对应关系 haha...
   s.teacher.remove(x)
  return HttpResponse("ojbk")

以上这篇django实现在开发中取消外键约束就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python开发windows GUI程序入门实例
Oct 23 Python
Python 常用 PEP8 编码规范详解
Jan 22 Python
Python实现KNN邻近算法
Jan 28 Python
python从子线程中获得返回值的方法
Jan 30 Python
使用python list 查找所有匹配元素的位置实例
Jun 11 Python
python通过链接抓取网站详解
Nov 20 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
python实现在线翻译功能
Mar 03 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
Dec 08 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 Python
Python如何利用正则表达式爬取网页信息及图片
Apr 17 Python
python ConfigParser库的使用及遇到的坑
Feb 12 Python
520使用Python实现“我爱你”表白
May 20 #Python
django 外键创建注意事项说明
May 20 #Python
在django admin中配置搜索域是一个外键时的处理方法
May 20 #Python
Python使用Paramiko控制liunx第三方库
May 20 #Python
解决django框架model中外键不落实到数据库问题
May 20 #Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
May 20 #Python
让Django的BooleanField支持字符串形式的输入方式
May 20 #Python
You might like
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
PHP中判断变量为空的几种方法小结
2013/11/12 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
Javascript实现的分页函数
2007/02/07 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
JavaScript性能陷阱小结(附实例说明)
2010/12/28 Javascript
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
2013/03/28 Javascript
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
Canvas 制作动态进度加载水球详解及实例代码
2016/12/09 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
windows下create-react-app 升级至3.3.1版本踩坑记
2020/02/17 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
python 获取字符串MD5值方法
2018/05/29 Python
详解python调用cmd命令三种方法
2019/07/08 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
Python中and和or如何使用
2020/05/28 Python
HTML5 canvas基本绘图之绘制线条
2016/06/27 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
德国排名第一的主题公园门票网站:Attraction Tickets Direct
2019/09/09 全球购物
班主任工作年限证明
2014/01/12 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
走群众路线学习心得体会
2014/10/31 职场文书
2015年组织委员工作总结
2015/04/23 职场文书