python - Django 多对多字段

标签 python database django model many-to-many

我需要制作一个智能菜单,为此我需要一个 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

如何在数据库中建立这种关系?我正在考虑将 health_plans (a,b) 作为列,将医生作为行,用 0 和 1 来标识他们承保的 health_plans。

有人告诉我这是对 ManyToManyField 的误用,我不知道该采取什么步骤。

感谢帮助

最佳答案

health_plans 列为列的方法不一定是错误的,但它意味着您拥有固定数量的健康计划并且永远不会添加新计划。

关系数据库中多对多关系的传统做法是在中间引入一个表。该表将仅包含医生和健康计划之间的关联。

如果您有一个包含以下内容的 Doctor 表:

id    name
1     foo
2     bar

还有一个HealthPlan表:

id    model
1     a
2     b

然后您添加一个表Doctor_HealthPlan,如下所示:

doctor_id    healthplan_id
1            2
2            1
2            2

django 中的ManyToMany 字段类型会自动为你创建这个表。您的代码是正确的,但您可能应该将 hp_id 重命名为 health_plans 之类的名称,因为它是允许您访问与医生关联的健康计划列表的代理。

关于python - Django 多对多字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16360205/

相关文章:

python - 如何隐藏 QComboBox 项目而不是清除它们

python - 无法创建 namedtuple 子类的实例 : TypeError: __new__() takes exactly 4 arguments (3 given)

python - 由 <function check_errors.<locals>.wrapper at 0x03A69780> 启动的线程中出现未处理的异常

mysql - mysql中如何分组、排序和取出前N个?

database - Oracle:提取图形数据库表示

sql-server - SQL Server 如何合并两个数据库?

python - django.core.exceptions.ImproperlyConfigured : uses parameter name 'order.id' which isn't a valid Python identifier

css - 调整 django 表单 - 评论表单 CSS

python - 我收到以下错误 : ModuleNotFoundError: No module named

python - 基于主题的文本和用户相似度