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 获取文件列表(或是目录例表)
Mar 25 Python
Python编程中归并排序算法的实现步骤详解
May 04 Python
利用Anaconda完美解决Python 2与python 3的共存问题
May 25 Python
Python3学习笔记之列表方法示例详解
Oct 06 Python
利用Python实现微信找房机器人实例教程
Mar 10 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
Jan 04 Python
AUC计算方法与Python实现代码
Feb 28 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
Apr 11 Python
Keras搭建自编码器操作
Jul 03 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
Dec 07 Python
Python实现位图分割的效果
Nov 20 Python
Python  序列化反序列化和异常处理的问题小结
Dec 24 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
在字符串中把网址改成超级链接
2006/10/09 PHP
php下Memcached入门实例解析
2015/01/05 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
thinkPHP下ueditor的使用方法详解
2015/12/26 PHP
一句话JavaScript表单验证代码
2009/08/02 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
谷歌浏览器调试JavaScript小技巧
2014/12/29 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
JavaScript与ActionScript3两者的同性与差异性
2016/09/22 Javascript
javascript实现获取图片大小及图片等比缩放的方法
2016/11/24 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
2017/03/08 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
Vue如何实现验证码输入交互
2020/12/07 Vue.js
python学习笔记:字典的使用示例详解
2014/06/13 Python
python生成式的send()方法(详解)
2017/05/08 Python
python基础学习之如何对元组各个元素进行命名详解
2018/07/12 Python
Django框架视图函数设计示例
2019/07/29 Python
python如何将多个PDF进行合并
2019/08/13 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
zooplus意大利:在线宠物商店
2019/08/07 全球购物
Why do we need Unit test
2013/01/03 面试题
学徒工职责
2014/03/06 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
汽车4S店前台接待岗位职责
2015/04/03 职场文书
罚款通知怎么写
2015/04/22 职场文书
企业计划生育责任书
2015/05/09 职场文书
植物园观后感
2015/06/11 职场文书
新郎婚礼致辞
2015/07/27 职场文书
JS代码编译器Monaco使用方法
2021/06/11 Javascript
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers