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')
...