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执行shell获取硬件参数写入mysql的方法
Dec 29 Python
python读取json文件并将数据插入到mongodb的方法
Mar 23 Python
python实现读取并显示图片的两种方法
Jan 13 Python
Python针对给定列表中元素进行翻转操作的方法分析
Apr 27 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
python使用epoll实现服务端的方法
Oct 16 Python
解决pycharm工程启动卡住没反应的问题
Jan 19 Python
python实现转圈打印矩阵
Mar 02 Python
如何使用Python自动控制windows桌面
Jul 11 Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 Python
基于Tensorflow:CPU性能分析
Feb 10 Python
python实现双向链表原理
May 25 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
东方红 - 来复式再生机的修复
2021/03/02 无线电
PHP写MySQL数据 实现代码
2009/06/15 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
JQuery 学习笔记 选择器之二
2009/07/23 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
使用angular写一个hello world
2015/01/23 Javascript
jquery滚动到顶部底部代码
2015/04/20 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
Vue单文件组件的如何使用方式介绍
2017/07/28 Javascript
vue2.0在table中实现全选和反选的示例代码
2017/11/04 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
2018/04/08 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
python pickle 和 shelve模块的用法
2013/09/16 Python
python字典排序实例详解
2015/05/20 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
python装饰器代替set get方法实例
2019/12/19 Python
Python JSON编解码方式原理详解
2020/01/20 Python
python 读取.nii格式图像实例
2020/07/01 Python
CSS3制作炫酷的自定义发光文字
2016/03/28 HTML / CSS
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
民间个人借款协议书
2014/09/30 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
Django实现翻页的示例代码
2021/05/24 Python