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 pdb调试方法分享
Jan 21 Python
python动态监控日志内容的示例
Feb 16 Python
Python中dictionary items()系列函数的用法实例
Aug 21 Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 Python
python 在屏幕上逐字显示一行字的实例
Dec 24 Python
Python实现网站表单提交和模板
Jan 15 Python
Python3多线程基础知识点
Feb 19 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
Jan 02 Python
TensorFlow查看输入节点和输出节点名称方式
Jan 04 Python
Python随机数函数代码实例解析
Feb 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
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
JQuery autocomplete 使用手册
2010/04/01 Javascript
js下用eval生成JSON对象
2010/09/17 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python之import机制详解
2014/07/03 Python
深入理解Django中内置的用户认证
2017/10/06 Python
Python实现替换文件中指定内容的方法
2018/03/19 Python
浅谈Python基础—判断和循环
2019/03/22 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
Puppeteer使用示例详解
2019/06/20 Python
在Pycharm中调试Django项目程序的操作方法
2019/07/17 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
python怎么对数字进行过滤
2020/07/05 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
和谐家庭事迹材料
2014/12/20 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
员工表扬信怎么写
2015/05/05 职场文书
楚门的世界观后感
2015/06/03 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android
Python语言中的数据类型-序列
2022/02/24 Python