Django models 同一个表DJANGO的中间表中有多个外键

Django models 同一个表DJANGO的中间表中有多个外键,django-models,Django Models,在与中间表的多对多关系中,我使用多个外键。但我犯了这样的错误 该模型被“examples.Employee.designation”用作中间模型,但它有多个来自“Employee”的外键,这是不明确的。您必须通过through_fields关键字参数指定Django应该使用的外键 我的型号是带中间台的 class Employee(models.Model): code = models.CharField(max_length = 256) designation =model

在与中间表的多对多关系中,我使用多个外键。但我犯了这样的错误 该模型被“examples.Employee.designation”用作中间模型,但它有多个来自“Employee”的外键,这是不明确的。您必须通过through_fields关键字参数指定Django应该使用的外键 我的型号是带中间台的

class Employee(models.Model):
    code = models.CharField(max_length = 256)
    designation =models.ManyToManyField(Designation,related_name='+',through = 'HRManagement',blank=True)
    status = models.BooleanField(default = True)
    join_date = models.DateField(default=datetime.datetime.now)
    leave_date = models.DateField(blank = True, null=True)
    username = models.CharField(max_length = 256)
    password = models.CharField(max_length = 256)
    first_name = models.CharField(max_length = 256)
    last_name = models.CharField(max_length = 256)
    address = models.TextField()

class Designation(models.Model):
    name = models.CharField(max_length = 256)

class HRManagement(models.Model):
    employee = models.ForeignKey(Employee, related_name = 'employee', null=True,on_delete=models.CASCADE)
    designation = models.ForeignKey(Designation, on_delete=models.CASCADE,default=None,null=True)
    reportto = models.ForeignKey(Employee, null=True, related_name='reportto',on_delete=models.CASCADE)
如何修复此错误?请帮助我建立模型。

直通模型(
HRManagement
)包含两个指向同一模型的
ForeignKey
Employee
Employee
reporto
链接),这是不明确的。这就是为什么

尝试通过_fields=('employee',designation')将
添加到
designation
中,以便将该字段声明为:

designation = models.ManyToManyField(Designation, related_name='+', through='HRManagement', blank=True, through_fields=('employee', 'designation'))
,从
到_fields
中字段的顺序为
(源、目标)
。如果进行了交换,
makemigrations
会将错误带出