2013-05-01 91 views
0

我是Django的新手,我无法理解model.ManyToMany是如何工作的。 我有这样的模式:Django模型ManyToMany id范例

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:N关系,因此我使用ManyToMany来创建关系。'

问题是,此代码生成3个表。 Health_plan,Doctors_list和hp_id。有什么意义?我可以通过它的身份识别号来识别医生,并将其与健康计划的ID相匹配。

健康计划表在此示例中计划为ab,并且默认为一个ID。 Doctor id = 5将在Health_plan表上的id = 5行上标记为1 (1 for true, 0 for false)

我应该使用另一种模式?提示?

+0

我认为它创建了3个表,因为关系的逆向遍历。虽然我不确定 – 2013-05-01 23:18:41

回答

1

任何多对多的关系,不只是在Django中,都需要一个链接表。

你说:“我可以通过它的ID来识别医生,并将其与健康计划的ID相匹配 - 呃,这正是链接表所做的。数据还会去哪里?正如你所说,每个医生都有很多计划,每个计划都有很多医生。因此,无论是医生还是计划方都无法存储该数据,因为您需要许多条目。链接表通过为每位医生提供许多条目以及每个计划的许多条目,但是每个医生+计划的组合只有一个条目。

相关问题