Django中管理员内联表单的两个外键

时间:2010-12-23 15:44:06

标签: python django

我想在管理员中使用2个外键作为内联表单。 我有一个带有以下字段的Timesheet模型:

class Timesheet(models.Model):
    date = models.ForeignKey(DateTimesheet, related_name="day")
    supervisor = models.ForeignKey(DateTimesheet, related_name="superintendent")
    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,)

以及包含这些字段的日期时间表:

class DateTimesheet(models.Model):
    date = models.DateField()
    supervisor = models.ForeignKey(User)

我希望能够选择日期&主管,然后将其余的时间表字段内联。似乎我需要一个复合键,从我读到的Django没有复合键。这根本不可能或我运气不好吗?

1 个答案:

答案 0 :(得分:1)

如果Timesheet是父模型而DateTimesheet是内联模式(反之亦然),则不需要复合键,只需:

  1. 使两个模型中的主管成为ForeignKey(用户)
  2. ommit the supervisor field in the inline表格
  3. overriding the save_formset method保存时,将其设置为父模型字段的vaule。
  4. 记住:

      

    InlineModelAdmin与ModelAdmin共享许多相同的功能,并添加了一些功能(共享功能实际上是在BaseModelAdmin超类中定义的)。