Django models 同一个表DJANGO的中间表中有多个外键
在与中间表的多对多关系中,我使用多个外键。但我犯了这样的错误 该模型被“examples.Employee.designation”用作中间模型,但它有多个来自“Employee”的外键,这是不明确的。您必须通过through_fields关键字参数指定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
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
会将错误带出