Django 解决model 反向引用中的related_name问题


Posted in Python onMay 19, 2020

问题:

定义表Apple:

class Apple( models.Model):
  origin_level = models.ForeignKey(AppleLevel)
  new_level = models.ForeignKey(AppleLevel)

出现如下问题:

monitor.apple: Accessor for field ‘origin_level' clashes with related field ‘AppleLevel.apple_set'. Add a related_name argument to the definition for ‘origin_level'.

monitor.apple: Accessor for field ‘new_level' clashes with related field ‘AppleLevel.apple_set'. Add a related_name argument to the definition for ‘new_level'.

原因:

一个数据表同时两次外键引用另一个表,出现重名问题。

解决办法:

使用related_name属性定义名称(related_name是关联对象反向引用描述符)。

具体修改代码如下:

class Apple( models.Model):
  origin_level = models.ForeignKey(AppleLevel, related_name='orgin_level_appleset')
  new_level = models.ForeignKey(AppleLevel, related_name='new_level_appleset')

related_name使用之后,有什么用处呢?

用处就是:

通过AppleLevel可以得到引用自身的Apple对象。

例如,

通过origin_level引用AppleLevel 中id为12的Apple的所有对象

AppleLevel.object.get(id=12).origin_level_appleset.objects.all()

通过new_level引用AppleLevel 中id为12的Apple的所有对象

AppleLevel.object.get(id=12).new_level_appleset.objects.all()

以上这篇Django 解决model 反向引用中的related_name问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python的迭代器与生成器实例详解
Jul 16 Python
Python中使用装饰器和元编程实现结构体类实例
Jan 28 Python
python实现批量改文件名称的方法
May 25 Python
在Django中同时使用多个配置文件的方法
Jul 22 Python
一道python走迷宫算法题
Jan 22 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
python批量修改文件夹及其子文件夹下的文件内容
Mar 15 Python
django admin后台添加导出excel功能示例代码
May 15 Python
计算机二级python学习教程(2) python语言基本语法元素
May 16 Python
python 单线程和异步协程工作方式解析
Sep 28 Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 Python
PyCharm2020.3.2安装超详细教程
Feb 08 Python
django queryset 去重 .distinct()说明
May 19 #Python
django正续或者倒序查库实例
May 19 #Python
Django model.py表单设置默认值允许为空的操作
May 19 #Python
django 模型中的计算字段实例
May 19 #Python
Django获取model中的字段名和字段的verbose_name方式
May 19 #Python
Python日志处理模块logging用法解析
May 19 #Python
基于PyQT实现区分左键双击和单击
May 19 #Python
You might like
树型结构列出指定目录里所有文件的PHP类
2006/10/09 PHP
详解PHP显示MySQL数据的三种方法
2008/06/05 PHP
php中根据变量的类型 选择echo或dump
2012/07/05 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
2014/10/30 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
js和jquery对dom节点的操作(创建/追加)
2013/04/21 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
python冒泡排序算法的实现代码
2013/11/21 Python
Python使用urllib模块的urlopen超时问题解决方法
2014/11/08 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
windows下安装Python虚拟环境virtualenvwrapper-win
2019/06/14 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
经济管理专业自荐信
2013/12/30 职场文书
五型班组建设方案
2014/02/10 职场文书
班级口号大全
2014/06/09 职场文书
2014最新版群众路线四风整改措施
2014/09/24 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
2016秋季校长开学典礼致辞
2015/11/26 职场文书
高三化学教学反思
2016/02/22 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
教你用python实现一个无界面的小型图书管理系统
2021/05/21 Python