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的Django框架中生成CSV文件的方法
Jul 22 Python
Python实现购物车功能的方法分析
Nov 10 Python
python TCP Socket的粘包和分包的处理详解
Feb 09 Python
利用Python批量提取Win10锁屏壁纸实战教程
Mar 27 Python
python3读取csv和xlsx文件的实例
Jun 22 Python
Django用户认证系统 Web请求中的认证解析
Aug 02 Python
利用pyecharts实现地图可视化的例子
Aug 12 Python
django框架中间件原理与用法详解
Dec 10 Python
keras在构建LSTM模型时对变长序列的处理操作
Jun 29 Python
简单了解Django项目应用创建过程
Jul 06 Python
Python基础之hashlib模块详解
May 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
PHP多文件上传类实例
2015/03/07 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
Symfony生成二维码的方法
2016/02/04 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
拖动一个HTML元素
2006/12/22 Javascript
js取得url地址参数实例
2013/02/22 Javascript
JavaScript生成GUID的多种算法小结
2013/08/18 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
使用vue-router设置每个页面的title方法
2018/02/11 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
vue自定义全局共用函数详解
2018/09/18 Javascript
深入理解移动前端开发之viewport
2018/10/19 Javascript
Javascript实现鼠标点击冒泡特效
2019/12/24 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
Python实现识别手写数字大纲
2018/01/29 Python
python微信公众号开发简单流程
2018/03/23 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
python中tkinter窗口位置\坐标\大小等实现示例
2020/07/09 Python
python 对象真假值的实例(哪些视为False)
2020/12/11 Python
canvas线条的属性详解
2018/03/27 HTML / CSS
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
干部培训自我鉴定
2014/01/22 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
党校学习心得体会范文
2014/09/09 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
PHP实现rar解压读取扩展包小结
2021/06/03 PHP
html5调用摄像头实例代码
2021/06/28 HTML / CSS