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脚本关闭文件操作的机制
Jun 28 Python
Django中Forms的使用代码解析
Feb 10 Python
解决python Markdown模块乱码的问题
Feb 14 Python
Django框架首页和登录页分离操作示例
May 28 Python
十行代码使用Python写一个USB病毒
Jun 21 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
Django 源码WSGI剖析过程详解
Aug 05 Python
如何使用Python破解ZIP或RAR压缩文件密码
Jan 09 Python
python 比较字典value的最大值的几种方法
Apr 17 Python
django为Form生成的label标签添加class方式
May 20 Python
python代码实现将列表中重复元素之间的内容全部滤除
May 22 Python
python实现数据结构中双向循环链表操作的示例
Oct 09 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
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
PHP实现用session来实现记录用户登陆信息
2018/10/15 PHP
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
移动端js图片查看器
2016/11/17 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
在Linux下调试Python代码的各种方法
2015/04/17 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
python中实现精确的浮点数运算详解
2017/11/02 Python
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
python简单商城购物车实例代码
2018/03/15 Python
python实现浪漫的烟花秀
2019/01/30 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
html5 自定义播放器核心代码
2013/12/20 HTML / CSS
Html5+CSS3+EL表达式问题小结
2020/12/19 HTML / CSS
365 Tickets英国:全球景点门票
2019/07/06 全球购物
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
中餐厅经理岗位职责
2014/04/11 职场文书
产品销售计划书
2014/05/04 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书