Python 属性错误:';曼尼托曼尼菲尔德';对象没有属性'_m2m#U反向#U名称#U缓存';

Python 属性错误:';曼尼托曼尼菲尔德';对象没有属性'_m2m#U反向#U名称#U缓存';,python,django,django-models,django-orm,Python,Django,Django Models,Django Orm,我正试图将项目经理分配给员工 每个员工,都可以成为项目经理 项目经理可以有多个员工 员工只能有一名项目经理 但是当我执行Employee.objects.get(name='HereHere').get\u xxx()时 我得到了AttributeError:“ManyToManyField”对象没有属性“\u m2m\u reverse\u name\u cache” class员工(models.Model): name=models.CharField(最大长度=20,唯一性=True

我正试图将项目经理分配给员工

  • 每个员工,都可以成为项目经理

  • 项目经理可以有多个员工

  • 员工只能有一名项目经理

但是当我执行
Employee.objects.get(name='HereHere').get\u xxx()时

我得到了
AttributeError:“ManyToManyField”对象没有属性“\u m2m\u reverse\u name\u cache”

class员工(models.Model):
name=models.CharField(最大长度=20,唯一性=True)
pm=models.ManyToManyField('self',symmetric=False,through='pm',related\u name='related\u to',)
def add_pm(自我、员工):
pm,created=pm.objects.get\u或\u create(从\u employee=self到\u employee\u in=employee,)
返回下午
def移除_pm(自身、员工等):
PM.objects.filter(
从_employee=self,
to_employee=员工,
)1.删除()
返回
def获取关系(自我,):
返回self.pm.filter(

为了_employee u from_employee=self)#我用上面的代码制作了一个应用程序,并设法重新创建了这个问题

我尝试按照建议将“self”切换为“Employee”,并尝试在字段中调整其他一些内容(如_delete=models.CASCADE
),但仍然实例化了一个Employee对象,并对其调用
.pm
,从而抛出了错误

我认为django对可以使用哪些类作为manytomy的
参数有期望,它必须有两个外键,而不是一个外键和一个manytomy

所以 如果切换到此选项:

class PM(models.Model):
    from_employee = models.ForeignKey(Employee, related_name='from_employee')
    to_employee = models.ForeignKey(Employee, related_name='to_employee')
它起作用了。不管怎样,这实际上是很多关系的正常模式——每个PM代表一个项目经理关系,而不是一个人

或者,
您可以让project manager成为员工之间的外键,名为“managed by”,以确保每个员工只能有一个项目经理。

您能告诉我如何制作fireign键以使每个员工只能有一个pm吗?
to_Employee=models.manytomy()
-我正在使用,因为在forms.py中,我可以将多个员工分配给PM。如果我将
更改为_employee
以使用ForeignKey,则我只能将一名员工分配给PM。如果您将该员工分配给项目经理,则每个员工只能有一名PM,但每个PM可以有多名员工。只需在Employee中创建一个外键字段