Django形成多个外键

时间:2018-03-27 10:59:46

标签: django django-forms

我有四个模型,其中三个有'独立'字段,但第四个模型有ForeignKey链接到其他三个。

class PreCheck(models.Model):
    name        = models.CharField(max_length=120)
    time_in     = models.DateTimeField(auto_now_add=True)
    is_insured = models.BooleanField()

class MainCheck(models.Model):
    height = models.FloatField()
    weight = models.IntegerField()

class PostCheck(models.Model):
    sickness = models.CharField(max_length=30)
    medication = models.CharField(max_length=30)

class MedicalRecord(models.Model):
    patient =   models.ForeignKey(User)
    next_check_date = models.DateTimeField()
    payment_amount  = models.IntegerField()

    initial_check = models.ForeignKey(PreCheck)
    main_check = models.ForeignKey(MainCheck)
    post_check = models.ForeignKey(PostCheck)

假设患者进入房间,完成预检并保存,然后进行其他检查,最后设置最终记录。

理想情况下,我想在不同时间填写不同模型的表单,可能在不同的页面/标签中。

管理员已经为MedicalRecord模型弹出窗口,但在前端很难为此编写javascript。 另一个选择是单独填写模型并执行 str 返回功能,然后从MedicalRecord表单中的下拉列表中选择(我正在努力避免)

1 个答案:

答案 0 :(得分:0)

只需为每个ForeignKey字段添加blank = True,null = True。

initial_check = models.ForeignKey(PreCheck, blank=True, null=True)
main_check = models.ForeignKey(MainCheck, blank=True, null=True)
post_check = models.ForeignKey(PostCheck, blank=True, null=True)

在初始检查时,您可以在MedicalRecord模型表单的帮助下创建MedicalRecord,这次main_check和post_check记录可以保留blank。 主检后,您可以使用main_check详细信息更新MedicalRecord,这次留空post_check记录,并在不同的页面/标签上继续更新您的MedicalRecord并提供详细信息。