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 11 Python
Python利用前序和中序遍历结果重建二叉树的方法
Apr 27 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
Dec 14 Python
代码讲解Python对Windows服务进行监控
Feb 11 Python
pandas数据框,统计某列数据对应的个数方法
Apr 11 Python
Python实现的大数据分析操作系统日志功能示例
Feb 11 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
Feb 16 Python
Python爬虫 批量爬取下载抖音视频代码实例
Aug 16 Python
Python递归实现打印多重列表代码
Feb 27 Python
Matplotlib使用Cursor实现UI定位的示例代码
Mar 12 Python
Django表单提交后实现获取相同name的不同value值
May 14 Python
Python切片列表字符串如何实现切换
Aug 06 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
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
php eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
php经典算法集锦
2015/11/14 PHP
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
2019/04/11 PHP
利用json获取字符出现次数的代码
2012/03/22 Javascript
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
2015/03/01 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
Angular实现表单验证功能
2017/11/13 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
jQuery使用each遍历循环的方法
2018/09/19 jQuery
详解如何使用nvm管理Node.js多版本
2019/05/06 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
vue从零实现一个消息通知组件的方法详解
2020/03/16 Javascript
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
python re模块常见用法例举
2021/03/01 Python
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
意大利消费电子产品购物网站:SLG Store
2019/12/26 全球购物
宣传部部长竞选演讲稿
2014/04/26 职场文书
研究生求职自荐书
2014/06/23 职场文书
工程安全生产协议书
2014/11/21 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
投诉书范文
2015/07/02 职场文书
八年级作文之友谊
2019/12/02 职场文书
世界十大狙击步枪排行榜
2022/03/20 杂记