我是Django的新手,我无法理解model.ManyToMany
的工作原理。
我有这个模型:
from django.db import models
class Health_plan(models.Model):
a = models.IntegerField ()
b = models.IntegerField ()
class Doctors_list(models.Model):
name = models.CharField(max_length=30)
hp_id = models.ManyToManyField(Health_plan)
def __unicode__(self):
return self.name
医生有一份健康计划的名称和清单。 N医生可以拥有健康计划。我认为这是一个N:N的关系,所以我使用ManyToMany来建立关系。
问题在于此代码生成3个表。 Health_plan,Doctors_list和hp_id。有什么意义?我可以通过它的身份识别医生,并将其与健康计划的ID相匹配。
健康计划表在此示例中包含计划a
和b
,默认情况下为ID。
Doctor id = 5
将在Health_plan表格中(1 for true, 0 for false)
的行上标记为1 id = 5
的计划。
我应该使用其他型号吗?提示?
答案 0 :(得分:1)
任何多对多关系,不仅仅是在Django中,都需要一个链接表。
你说“我可以通过其ID来识别医生,并将其与健康计划的ID相匹配” - 嗯,这正是链接表的作用。这些数据还会在哪里发生?正如你所说,每个医生都有很多计划,每个计划都有很多医生。因此,无需将数据存储在医生一侧或计划方面,因为您需要许多条目。链接表通过为每位医生提供了许多条目,并为每个计划提供了许多条目,但每个医生+计划的组合只有一个条目。