Django之Mode的外键自关联和引用未定义的Model
Django Model的外键自关联
在django的model定义中,有时需要某个Field引用当前定义的Model,比如一个部门(Department)的Model,它有一个字段是上级部门(super_department),上级部门应该是一个外键并引用Model Department,即:
class Department(models.Model):'''some other filed'''super_department = models.ForeignKey(Department)
但是这样的定义对于python来说是不允许的,因为在定义Field super_department时,Department定义还未完成,python会提示你Department未定义,那么怎么办呢?放心吧,django已经为你考虑好这种情况了,只需要在定义时将ForeignKey所引用的Model改为‘self’即可,即:
class Department(models.Model):'''some other filed'''super_department = models.ForeignKey('self')
然后同步models至数据库时就会生成一个引用自己的外键。
Django Model之引用一个未定义的Model
有时在django的Model定义中,会出现引用一个未定义Model的情况,比如一个用户(User)属于某一个部门(Department),每一个部门有一个领导(leader),这个领导也是一个用户,即:
class Department(models.Model):name = models.CharField(max_length=20)leader = models.ForeignKey(User, related_name = 'lead_group', null = True)class User(models.Model):username = models.CharField(max_length = 20)department = models.ForeignKey(Department, related_name = 'users')
但这么定义就会引发在Department定义时,Field leader引用User,但此时的User还未定义。有人会说,先定义User,再定义Department,那也会引发一样的问题,因为User的department引用Department,此时的Department一样未被定义。那么这时候怎么办呢?其实,只需要将ForeignKey引用的Model改为字符串即可,即:
class Department(models.Model):name = models.CharField(max_length=20)leader = models.ForeignKey('User', related_name = 'lead_group')#User now be str typeclass User(models.Model):username = models.CharField(max_length = 20)department = models.ForeignKey(Department, related_name = 'users')
Django之Mode的外键自关联和引用未定义的Model相关推荐
- python自关联_Django之Mode的外键自关联和引用未定义的Model方法
Django Model的外键自关联 在django的model定义中,有时需要某个Field引用当前定义的Model,比如一个部门(Department)的Model,它有一个字段是上级部门(sup ...
- 【Python】django模型models的外键关联使用
[Python]django模型models的外键关联使用 Python 2.7.10,django 1.8.6 外键关联:http://www.bubuko.com/infodetail-61830 ...
- hibernate一对一外键单向关联
与上篇相对应,还是client和address是一对一的外键关联关系,address表中的主键ID与client表中的外键CLIENTADDRESSID构成一对一外键关联关系. 表结构和sql语句就不 ...
- Hibernate 一对一外键单向关联
[align=center][size=medium]Hibernate 一对一外键单向关联[/size][/align] 基于外键关联的单向一对一关联和单向多对一关联几乎是一样的.唯一的不同就是单向 ...
- Django学习手册 - ORM 外键
Django 外键创建 关键语法: models.ForeignKey("UserGroup",to_field="gid",default=1,on_dele ...
- MySQL主外键表关联表数据的同时删除
今天遇到这样的问题,用mysql数据库,删除主表的数据时,删除不了报错.原来是主外键的关联关系. 遇到的错误和解决方法如下: 问题解决后,我又从网上找到了一篇讲解非常优秀的博文,转载至此,作者原文地址 ...
- [django]list_display 中包含外键内的字段
2019独角兽企业重金招聘Python工程师标准>>> class UserinfoAdmin(admin.ModelAdmin): list_display = ("le ...
- django外键和多数据库应用
为什么80%的码农都做不了架构师?>>> 模型中如果有外键和多对多字段,创建的时候外键必须首先绑定,然后保存,才能添加多对多字段. from django.db import ...
- Mysql中的外键分析(什么是外键,为什么要用外键,添加外键,主外键关联删除)
有一个东西一直在我脑海中是个很烦的东西,但是这东西不搞清楚会阻碍自己的前进.自己做项目demo永远只能用一张表... 所以今天还是学习了下外键希望能够搞明白一些... 百度上搜索外键的作用" ...
最新文章
- C++/C++11中std::deque的使用
- HDU-1452 因子和 积性函数性质
- 三星下一代手机芯片由AI来设计,EDA行业老大提供技术
- 例题:学习数据库查询。学生信息表的创建,主外键关系,以及45道题的查询实例。主要知识点在讲页45页,和讲页65页...
- 用Scikit-learn和TensorFlow进行机器学习(三)
- 破解百度翻译页面api参数加密
- textview文本超出部分用省略号表示
- StackExchange.Redis 官方文档(六) PipelinesMultiplexers
- linux账号密码登录,在自己的小linux上实现用户具有账号密码才可以登录
- php api 在线编辑导出,api在线管理,调试,文档生成工具之Apizza
- 谷歌手势插件--crxMouse Chrome™ 手势
- 万年历插件软件测试,万年历软件测试方案.docx
- 慕课网-前端课程学习完成
- TCP基于窗口的端到端的拥塞控制机制
- 过支付宝反Xposed登录检测
- vue开发APP使用微信分享和QQ分享功能
- 云计算实验2 Spark分布式内存计算框架配置及编程案例
- JVM 直接内存的使用与回收
- 上海宝山锦隆考试基地科目三笔记
- uCOS3源码解析视频教程-第4季第7部分-朱有鹏-专题视频课程
热门文章
- 阿里数据架构师多年心得:IT从业者必看的数据仓库知识点
- IT外包 OpenEIM 强调CMMI等级
- 【飞鸽传书】飞鸽传书2011绿色版
- 床位的摆放有五大禁忌
- 使用临界段实现优化的进程间同步对象-原理和实现
- 水滴石穿C语言之typedef的问题
- java中process方法用处_Java中ProcessBuilder应用实例
- 打印机乱码不停打印_关于东芝复合机连接打印,图文教你如何轻松连接至电脑...
- Circulation:吃鸡蛋量多,死亡风险增加?
- 这个大部分CNS都会用到的技术分析流程大放送......