Django model 反向引用中的related_name
来源:互联网 发布:手机应用程序数据备份 编辑:程序博客网 时间:2024/05/19 14:17
问题:
定义表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()
参考:
http://www.cnblogs.com/blogofwyl/p/4283513.html
0 0
- Django model 反向引用中的related_name
- Django使用:ORM 的反向查找(related_name)
- django model中的循环引用,无限层次
- Django中的Model继承
- Django生成表和反向生成Model
- redisco,django中的Model共存
- Django model中的元选项
- 关于django Models的个人理解和related_name的使用
- 正则表达式中的反向引用
- 正则表达式中的反向引用
- JScript 中的反向引用和使用反向引用
- JScript 中的反向引用和使用反向引用
- Django model
- Django model
- Django model
- django model
- django--Model
- Django-Model
- jfinal学习笔记【1】-laymi(雷米快速开发平台)
- HDU 2112 HDU Today
- 一维数组和二维数组的运算(sizeof与strlen的区别)
- webpack+vue+vueRouter+es6 构建的简单实例项目
- Androidstudio实现手机摇一摇功能
- Django model 反向引用中的related_name
- java 虚拟机的特性
- 九个Console命令,让js调试更简单
- 赚分
- 蓝桥杯历届试题-最大子阵-(前缀和))
- 返回值直接返回为页面键值对的值
- 字符移位笔试题
- ES6 搭建过程记录
- 进程和线程的区别