Python django 2外键从一个型号切换到另一个型号
是否有一种方法可以使模型中的两个外键与同一个模型相关。在本例中,我希望时间表中的“date”和“supervisor”都作为DateTimesheet的外键。我试图实现的是让时间表与管理员中的DateTimesheet内联,并且能够输入日期和主管一次,然后内联输入多个时间表,而不必为每个时间表输入日期或主管Python django 2外键从一个型号切换到另一个型号,python,django,Python,Django,是否有一种方法可以使模型中的两个外键与同一个模型相关。在本例中,我希望时间表中的“date”和“supervisor”都作为DateTimesheet的外键。我试图实现的是让时间表与管理员中的DateTimesheet内联,并且能够输入日期和主管一次,然后内联输入多个时间表,而不必为每个时间表输入日期或主管 class DateTimesheet(models.Model): date = models.DateField() supervisor = models.Foreig
class DateTimesheet(models.Model):
date = models.DateField()
supervisor = models.ForeignKey(User)
class Meta:
verbose_name = 'Daily Timesheet'
unique_together = (('date', 'supervisor'),)
def __unicode__(self):
return '%s | %s' % self.date.strftime("%A, %B %d.")
class Timesheet(models.Model):
date = models.ForeignKey(DateTimesheet)
supervisor = models.ForeignKey(DateTimesheet)
job = models.ForeignKey(Job)
phase = models.ForeignKey(Phase)
equip = models.ForeignKey(Equipment, null=True, blank=True)
employee = models.ForeignKey(Employee)
local = models.ForeignKey(Local)
pay_class = models.ForeignKey(PayClass)
reg = models.IntegerField(max_length=1)
ot = models.IntegerField(max_length=2, null=True, blank=True)
bill_rate = models.DecimalField(decimal_places=2,max_digits=6, blank=True,null=True)
bill_hours = models.IntegerField(max_length=2,blank=True,null=True,)
对。给它们不同的值。这没问题 您应该会遇到一个错误,即需要指定一个
相关的\u名称
,该信息应该可以解决您的问题
您必须指定模型。ForeignKey(DateTimeSheet,related_name=“something_else”)
否则django会抱怨反向关系经理需要唯一的名称
澄清一下:related\u name
是您在反向查找中使用的名称,例如:datetimesheet.timesheet\u set.all()
当您有两个外键指向日期时间表时,django需要能够区分这两个外键。如果必须在一个型号上使用外键指向同一型号,则必须:
当我使用相关的_名称时,它允许我同步数据库,但它会引发异常。当你试图访问管理员时,有超过1个外键如果这是因为你在管理员中使用内联,谷歌“fk_name”的文档来查找修复程序,这是可行的,但它仍然不能解决我的问题,即可以选择日期和主管,并将时间表模型的其余部分内联。我只能选择日期或主管作为外键。我想我真正需要的是一个复合键,其中主键是date&supervisor。您不创建两个内联线吗,一个用于
日期
,一个用于主管
?
class DateInline(admin.TabularInline):
model = DateTimeSheet
fk_name = "date"