Python Django-基于同一中介模型的两个或多个多对多关系
在使用Django的医疗应用程序中,既有患者模型,也有药物模型(在本问题中,只有“名称”字段),其中需要建立三种多对多关系:Python Django-基于同一中介模型的两个或多个多对多关系,python,django,many-to-many,Python,Django,Many To Many,在使用Django的医疗应用程序中,既有患者模型,也有药物模型(在本问题中,只有“名称”字段),其中需要建立三种多对多关系: allergies:不需要额外的字段,因此一个简单的ManyToManyField就足够了 其他药物:指患者因其他医疗原因服用的药物的表格(也会有“剂量”列) 处方:指我们诊所为患者开出的药物的表格(也会有“剂量”和“持续时间”列) 我考虑了一些可能的解决办法。我的问题基本上是哪个更可取: 制作两个不相关的中介模型(这似乎是个坏主意,因为它违反了枯燥的原则) 制作一个
:不需要额外的字段,因此一个简单的ManyToManyField就足够了allergies
:指患者因其他医疗原因服用的药物的表格(也会有“剂量”列)其他药物
:指我们诊所为患者开出的药物的表格(也会有“剂量”和“持续时间”列)处方
处方
和其他药物
字段建立了相同的关系,那么这个问题的解决方案会有所不同吗?(即,两者都有“剂量”和“持续时间”列)。我假设在这种情况下,代码重用会更简单
提前谢谢
class Prescription(models.Model):
medication = models.ForeignKey(Medication, on_delete=models.CASCADE)
patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
dose = models.CharField(max_length=32)
class OtherMedication(models.Model):
medication = models.ForeignKey(Medication, on_delete=models.CASCADE)
patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
dose = models.CharField(max_length=32)
duration_in_days = models.IntegerField()
class PatientMedicationRelationship(models.Model):
class Meta:
abstract = True
medication = models.ForeignKey(Medication, on_delete=models.CASCADE)
patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
dose = models.CharField(max_length=32)
class Prescription(PatientMedicationRelationship):
pass
class OtherMedication(PatientMedicationRelationship):
duration_in_days = models.IntegerField()