博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django model 反向引用中的related_name
阅读量:5054 次
发布时间:2019-06-12

本文共 1160 字,大约阅读时间需要 3 分钟。

转:https://blog.csdn.net/lanyang123456/article/details/68962515

问题:

定义表Apple:

class Apple( models.Model): origin_level = models.ForeignKey(AppleLevel) new_level = models.ForeignKey(AppleLevel)
  • 1
  • 2
  • 3

出现如下问题:

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')
  • 1
  • 2
  • 3

related_name使用之后,有什么用处呢?

用处就是:
通过AppleLevel可以得到引用自身的Apple对象。

例如,

通过origin_level引用AppleLevel 中id为12的Apple的所有对象

AppleLevel.object.get(id=12).origin_level_appleset.objects.all()
  • 1

通过new_level引用AppleLevel 中id为12的Apple的所有对象

AppleLevel.object.get(id=12).new_level_appleset.objects.all()
  • 1

参考:

转载于:https://www.cnblogs.com/eternal1025/p/8682677.html

你可能感兴趣的文章
lemon详细使用方法
查看>>
Windows Server 笔记(七):Windows Server 2012 R2 NIC Teaming(NIC组)
查看>>
3.window窗口
查看>>
SQL Link Oracle
查看>>
bzoj 1007: [HNOI2008]水平可见直线 半平面交
查看>>
2017-02-26
查看>>
使用cookie实现只出现一次的广告代码效果
查看>>
Android网络通信框架---Volley
查看>>
浅谈animation里的forwards
查看>>
事件的节流(throttle)与防抖(debounce)
查看>>
07_ddms透视图介绍
查看>>
python初步学习-python模块之 logging
查看>>
Molas——.NET依赖分离框架
查看>>
静态页面传值
查看>>
智能手持终端方案
查看>>
基于visual Studio2013解决C语言竞赛题之0408素数
查看>>
Harbor-企业级Registry服务器使用(图解)
查看>>
新建的亚马逊云服务器EC2 ping 不通 解决方案
查看>>
一 数据的概括性度量
查看>>
Spring boot(一) 入门
查看>>