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实现115网盘自动下载的方法
Sep 30 Python
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
Mar 30 Python
python 实现红包随机生成算法的简单实例
Jan 04 Python
Python中的默认参数实例分析
Jan 29 Python
Python Xml文件添加字节属性的方法
Mar 31 Python
对Python2与Python3中__bool__方法的差异详解
Nov 01 Python
Python Web框架之Django框架Model基础详解
Aug 16 Python
python3实现用turtle模块画一棵随机樱花树
Nov 21 Python
python实点云分割k-means(sklearn)详解
May 28 Python
社区版pycharm创建django项目的方法(pycharm的newproject左侧没有项目选项)
Sep 23 Python
使用Python爬取小姐姐图片(beautifulsoup法)
Feb 11 Python
OpenCV-Python 实现两张图片自动拼接成全景图
Jun 11 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
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
基于PHP文件操作的详细诠释
2013/06/21 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
php上传图片获取路径及给表单字段赋值的方法
2016/01/23 PHP
php自动载入类用法实例分析
2016/06/24 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
jQuery功能函数详解
2015/02/01 Javascript
JS实现跟随鼠标的链接文字提示框效果
2015/08/06 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
Javascript调试之console对象——你不知道的一些小技巧
2017/07/10 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
python 将字符串转换成字典dict
2013/03/24 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
python批量生成条形码的示例
2020/10/10 Python
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
新大陆软件面试题
2016/11/24 面试题
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
三项教育活动实施方案
2014/03/30 职场文书
团支部建设方案
2014/05/02 职场文书
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android
理解python中装饰器的作用
2021/07/21 Python