为ManyToManyField分配值

时间:2017-03-23 07:19:22

标签: django django-models many-to-many

这是我第一次在django中使用M2M关系。这就是我想要实现的目标。我有一个患者模型modelPatient,可以分配给多个学生(医学生),每个学生modelStudent可以有多个患者进行检查。为此,我决定在这里使用M2M关系。如果在这种情况下这是正确的设计决定,请告诉我。

   class modelPatient(models.Model):
       student            = models.ManyToManyField(modelStudent,null=True,default=None,blank=True)
       patient_name       = models.CharField(max_length=128, unique=False)

这是学生模型

class modelStudent(models.Model):
    first_name       = models.CharField(max_length=128, unique=False)

现在假设我正在做这样的事情

patient = modelPatient.object.get(patient_name="John")

如何将此patient分配给多个学生studentAstudentB

studentA = modelStudent.objects.get(first_name="john")
studentB = modelStudent.objects.get(first_name="adam")

我想要的是patient实例与studentAstudentB相关联。如果可能或我的设计决定不正确,请告诉我。

2 个答案:

答案 0 :(得分:1)

答案可以在这里找到:how to add data into ManyToManyField?

只需将它们添加到您的关系中:

patient.student.add(studentA)
patient.student.add(studentB)

或者你可以用

在一行中添加它们
patient.student.add(studentA, studentB)

有关详细信息,请参阅文档,其中提供了非常好的示例:https://docs.djangoproject.com/en/1.10/topics/db/examples/many_to_many/

另请注意,您可以从patient对象访问student

答案 1 :(得分:1)

https://docs.djangoproject.com/en/1.10/topics/db/examples/many_to_many/

patient = modelPatient.object.get(patient_name="John")
studentA = modelStudent.objects.get(first_name="john")
studentB = modelStudent.objects.get(first_name="adam")
patient.student.add(studentA, studentB)

此处关于modelPatient - model的FYI也是多余的,patient中的patient_name也是多余的。您已经在Patient模型命名空间

中执行此操作