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的条件语句与运算符优先级详解
Oct 13 Python
Python 详解基本语法_函数_返回值
Jan 22 Python
python下解压缩zip文件并删除文件的实例
Apr 24 Python
python+numpy+matplotalib实现梯度下降法
Aug 31 Python
Python爬取破解无线网络wifi密码过程解析
Sep 17 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
Dec 13 Python
在ipython notebook中使用argparse方式
Apr 20 Python
查看jupyter notebook每个单元格运行时间实例
Apr 22 Python
python Socket网络编程实现C/S模式和P2P
Jun 22 Python
python不同系统中打开方法
Jun 23 Python
如何用Matplotlib 画三维图的示例代码
Jul 28 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
微信API接口大全
2015/04/15 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
Jquery 学习笔记(一)
2009/10/13 Javascript
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
2016/03/25 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
react.js 翻页插件实例代码
2017/01/19 Javascript
JavaScript中in和hasOwnProperty区别详解
2017/08/04 Javascript
利用纯js + transition动画实现移动端web轮播图详解
2017/09/10 Javascript
基于Angularjs-router动态改变Title值的问题
2018/08/30 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
在Python中定义一个常量的方法
2018/11/10 Python
python多线程与多进程及其区别详解
2019/08/08 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
Linux如何为某个操作添加别名
2013/03/01 面试题
自我鉴定模板
2013/10/29 职场文书
实习教师个人的自我评价
2013/11/08 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
元旦晚会活动总结
2014/07/09 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
2015年组织委员工作总结
2015/04/23 职场文书
员工规章制度范本
2015/08/07 职场文书
大学生活委员竞选稿
2015/11/21 职场文书