Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django 2外键从一个型号切换到另一个型号_Python_Django - Fatal编程技术网

Python django 2外键从一个型号切换到另一个型号

Python django 2外键从一个型号切换到另一个型号,python,django,Python,Django,是否有一种方法可以使模型中的两个外键与同一个模型相关。在本例中,我希望时间表中的“date”和“supervisor”都作为DateTimesheet的外键。我试图实现的是让时间表与管理员中的DateTimesheet内联,并且能够输入日期和主管一次,然后内联输入多个时间表,而不必为每个时间表输入日期或主管 class DateTimesheet(models.Model): date = models.DateField() supervisor = models.Foreig

是否有一种方法可以使模型中的两个外键与同一个模型相关。在本例中,我希望时间表中的“date”和“supervisor”都作为DateTimesheet的外键。我试图实现的是让时间表与管理员中的DateTimesheet内联,并且能够输入日期和主管一次,然后内联输入多个时间表,而不必为每个时间表输入日期或主管

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"