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通过90行代码搭建一个音乐搜索工具
Jul 29 Python
详解Python爬虫的基本写法
Jan 08 Python
详解python中xlrd包的安装与处理Excel表格
Dec 16 Python
python的random模块及加权随机算法的python实现方法
Jan 04 Python
Python中扩展包的安装方法详解
Jun 14 Python
python利用dir函数查看类中所有成员函数示例代码
Sep 08 Python
django 删除数据库表后重新同步的方法
May 27 Python
Python函数的参数常见分类与用法实例详解
Mar 30 Python
Python发展史及网络爬虫
Jun 19 Python
Tensorflow实现神经网络拟合线性回归
Jul 19 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
Oct 18 Python
python随机模块random使用方法详解
Feb 14 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下连接ftp实现文件的上传、下载、删除文件实例代码
2010/06/03 PHP
php 变量未定义等错误的解决方法
2011/01/12 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
1亿条数据如何分表100张到Mysql数据库中(PHP)
2015/07/29 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
php数据访问之查询关键字
2016/05/09 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
jquery select(列表)的操作(取值/赋值)
2011/03/16 Javascript
js验证IP及子网掩码的合法性有效性示例
2014/04/30 Javascript
jQuery实现类似标签风格的导航菜单效果代码
2015/08/25 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
React Native之TextInput组件解析示例
2017/08/22 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
python两种遍历字典(dict)的方法比较
2014/05/29 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
python3注册全局热键的实现
2020/03/22 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
高一历史教学反思
2014/01/13 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
政治表现评语
2014/05/04 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书