0

我在 ubuntu 18.04 上使用 django 2.2、python 3.6.8 和 mysql 服务器。我有课程、学生和课程表。课程和学生之间存在多对多的关系。在课程模型中:

student = models.ManyToManyField(Student, blank=True, verbose_name=_("Öğrenci"))

我在模板中手动创建了一个表单并手动插入数据。视图.py:

studentnamesuuidlist = request.POST.getlist('ogrenci_isimleri') #list

student1 = Student.objects.filter(uuid=studentnamesuuidlist[0])
coursesobject.student.set(student1)
student2 = Student.objects.filter(uuid=studentnamesuuidlist[1])
coursesobject.student.set(student2) 

本课程有2名学生。学生 uuid 来自模板表单帖子。当我在上面运行时,会在 course_student 联合表中创建 student2 记录。但是 student1 没有被创建。它应该创建两条记录,但它只在联合表中创建一条记录。

4

2 回答 2

1

你应该使用.add而不是.set看到这个
.set重写和.add追加。

studentnamesuuidlist = request.POST.getlist('ogrenci_isimleri') #list

student1 = Student.objects.filter(uuid=studentnamesuuidlist[0])
coursesobject.student.add(student1)
student2 = Student.objects.filter(uuid=studentnamesuuidlist[1])
coursesobject.student.add(student2) 
于 2019-11-15T01:51:15.733 回答
0

解决了。

    studentnamesuuidlist = request.POST.getlist('ogrenci_isimleri') #list

    student1 = Student.objects.get(uuid=studentnamesuuidlist[0])
    student2 = Student.objects.get(uuid=studentnamesuuidlist[1])
    coursesobject.student.add(student1,student2) 
    coursesobject.save()        
于 2019-11-15T01:49:55.810 回答