我目前正在学习Django模型。这是我目前的情况。我有三个型号
1-Patient_Names
2-Patient_Responses
3-Doctor_Questions
现在,这里将有多个患者的关系将由模型Patient_Names
表示。现在,每位患者都会对医生提出的问题做出具体回答,这些回答由模型Patient_Responses
表示。因此,Patient_Responses
模型将具有与Patient_Names
模型的foreignKey的字段。此外,由于响应将来自模型Doctor_Questions
的问题,因此Patient_Response具有另一个字段,是model Doctor_Questions
的foreignKey。这是正确的方法吗?模型有两个外键吗?
Patient_Names Doctor_Questions
| |
|---------Patient_Responses -------|
|
pname = models.ForeignKey(Patient_Names)
doctor_questions = models.ForeignKey(Doctor_Questions)
答案 0 :(得分:1)
您在这里实际创建的是多对多关系,而在django中,ManyToManyField支持
案例1,Patient_Responses只有两个外键。
您不需要此型号。只需将其删除并在其余模型之一上添加ManyToManyField即可简化代码并访问此字段提供的一组功能
class Patient_Names(models.Model):
...
questions = models.ManyToManyField(Doctor_Questions)
案例2,Patient_Responses包含两个外键以外的字段。
现在您无法删除Patient_Responses模型,但您仍然可以通过将其声明为直通模型来解锁ManyToManyFields的好处
questions = models.ManyToManyField(Doctor_Questions, through='Patient_Responses')