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通过PIL获取图片主要颜色并和颜色库进行对比的方法
Mar 19 Python
python读写二进制文件的方法
May 09 Python
python图像处理之反色实现方法
May 30 Python
使用Turtle画正螺旋线的方法
Sep 22 Python
Python从零开始创建区块链
Mar 06 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
python3+PyQt5 实现Rich文本的行编辑方法
Jun 17 Python
python定位xpath 节点位置的方法
Aug 27 Python
wxpython自定义下拉列表框过程图解
Feb 14 Python
解析Tensorflow之MNIST的使用
Jun 30 Python
Django日志及中间件模块应用案例
Sep 10 Python
OpenCV3.3+Python3.6实现图片高斯模糊
May 18 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
PhpMyAdmin中无法导入sql文件的解决办法
2010/01/08 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
替换php字符串中的单引号为双引号的方法
2017/02/16 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
js用图作提交按钮或超连接
2008/03/26 Javascript
js取得url地址参数实例
2013/02/22 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
对于input 框限定输入值为浮点型的js代码
2017/09/25 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
pandas带有重复索引操作方法
2018/06/08 Python
如何用Python合并lmdb文件
2018/07/02 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
Python当中的array数组对象实例详解
2019/06/12 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
教你怎样写好自我评价
2013/10/05 职场文书
医护人员英文求职信范文
2013/11/26 职场文书
人事文员岗位职责
2014/02/16 职场文书
工作睡觉检讨书
2014/02/25 职场文书
法律六进活动方案
2014/03/13 职场文书
百年校庆感言
2015/08/01 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电