Python 在Django中保存多对多字段的实例

Python 在Django中保存多对多字段的实例,python,django,Python,Django,我正试图通过一个模型表格让一个学生参加一门特定的课程。但是它抛出了一个错误,说“学生”对象不可编辑 我的模型是: class Student(User): full_name = models.CharField(max_length=300) class Course(models.Model): course_name = models.CharField(max_length=300) author = models.ForeignKey(Teacher,on_

我正试图通过一个模型表格让一个学生参加一门特定的课程。但是它抛出了一个错误,说“学生”对象不可编辑

我的模型是:

class Student(User):
    full_name = models.CharField(max_length=300)


class Course(models.Model):
    course_name = models.CharField(max_length=300)
    author = models.ForeignKey(Teacher,on_delete=models.CASCADE,null=True)
    student = models.ManyToManyField(Student)
    course_content = models.TextField(null=True)

    def __str__(self):
        return self.course_name
看法

试着这样做:

...
if form.is_valid():
    name = get_object_or_404(Student,username = request.user.username)
    instance = form.save(commit=False)
    instance.save()
    instance.student.add(name)
    instance.save()
    print('saved')
...

如果不使用save_m2m方法,则在使用此多对多关系之前,它给出的“”需要为字段“id”设置一个值。问题是,您将其称为调用属性
student
,并且您确信它是
student
,但它应该是
students
,因此它是学生的管理者,根据需要,您可以.add或.remove甚至.all()
...
if form.is_valid():
    name = get_object_or_404(Student,username = request.user.username)
    instance = form.save(commit=False)
    instance.save()
    instance.student.add(name)
    instance.save()
    print('saved')
...