繁体   English   中英

找不到Django related_name

[英]Django related_name not found

我有这个型号:

class Person(models.Model):
    something ...
    employers = models.ManyToManyField('self', blank=True, related_name='employees')

当我做person.employees.all()我得到这个错误: 'Person' object has no attribute 'employees' 是否仅在存在实际链接时才创建相关名称。 如果是,我该如何检查?

编辑:我知道hasattr()函数。 我仍然想知道为什么当没有相关对象时该属性不返回空列表。

要使用递归多对多的related_name,您需要设置symmetrical=False 没有它,Django不会将employees属性添加到类中。 来自文档

当Django处理这个模型时,它会识别出它自身有一个ManyToManyField,因此它不会向Person类添加person_set属性。 相反,ManyToManyField被认为是对称的 - 也就是说,如果我是你的朋友,那么你就是我的朋友。

所以你可以在字段中添加symmetrical=False

employers = models.ManyToManyField('self', blank=True, related_name='employees', symmetrical=False)

person.employees.all() # will work now

或者只使用employers属性:

person.employers.all()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM