[英]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.