当前位置:主页 > python教程 > Django之Mode的外键自关联和引用未定义的Model方法

Django Mode的外键自关联和引用未定义的Model方法详解

发布:2020-02-02 10:13:27 90


给大家整理一篇Django相关的编程文章,网友文隽巧根据主题投稿了本篇教程内容,涉及到Django、Mode、外键、Django之Mode的外键自关联和引用未定义的Model方法相关内容,已被323网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。

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 type
 
class User(models.Model):
  
  username = models.CharField(max_length = 20)
  department = models.ForeignKey(Department, related_name = 'users')

以上这篇Django之Mode的外键自关联和引用未定义的Model方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。


参考资料

相关文章

  • 从Django Rest Framework响应中删除空字段的代码方法

    发布:2019-12-07

    这篇文章主要介绍了详解从Django Rest Framework响应中删除空字段,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • django1.11.1 models 数据库同步方法

    发布:2022-10-20

    给网友朋友们带来一篇关于django的教程,今天小编就为大家分享一篇django1.11.1 models 数据库同步方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • python django 原生sql 获取数据的方法分享

    发布:2021-05-06

    今天小编就为大家分享一篇python django 原生sql 获取数据的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • Django 中间键和上下文处理器的使用

    发布:2022-04-11

    这篇文章主要介绍了Django 中间键和上下文处理器的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • django-allauth基础知识点及用法

    发布:2020-02-07

    这篇文章主要介绍了django-allauth入门学习和使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • django基于cors解决跨域请求问题知识点分析

    发布:2020-02-13

    这篇文章主要介绍了django基于cors解决跨域请求问题详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下


  • Django后端按照日期查询的方法教程

    发布:2022-12-06

    给大家整理了关于Django的教程,这篇文章主要给大家介绍了关于Django后端按照日期查询的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • django开发之settings.py中变量的全局引用效果示例

    发布:2020-01-14

    当网站里面的一些内容,如邮箱,网站标题,网站的描述,这些东西我们可以存在数据库中也可以存放在我们的setting 文件中,这篇文章主要给大家介绍了django中settings.py变量的全局引用的相关


网友讨论