django - django无法在用于指定中介模型的ManyToManyField上设置值。改用Manager

标签 django forms m2m

我正在以相同的形式保存两个表-具有m2m关系。
我没有成功,但错误仍然存​​在,例如:无法在指定中介模型的ManyToManyField上设置值。改用成员(member)管理器
成员资格是我的“通过表”。

我的代码:

def save_classroom(request):
   classroom_instance = Classroom()
   if request.method == 'POST':
        form = ClassroomForm(request.POST, request.FILES, user = request.user) 
        if form.is_valid():
           new_obj = form.save(commit=False)
           new_obj.user = request.user 
           new_obj.save()
           membership = Membership(member = request.user,classroom=new_obj)
           membership.save() 
           form.save_m2m()
           return HttpResponseRedirect('.')    
   else:
           form = ClassroomForm(user = request.user)     
   return render_to_response('classroom/classroom_form.html', {
           'form': form,

           }, 
          context_instance=RequestContext(request))  

我的模特:
class Classroom(models.Model):
     user = models.ForeignKey(User, related_name = 'classroom_creator')
     classname = models.CharField(max_length=140, unique = True)
     date = models.DateTimeField(auto_now=True)
     open_class = models.BooleanField(default=True)
     members = models.ManyToManyField(User,related_name="list of invited members", through = 'Membership')

class Membership(models.Model): 
      accept = models.BooleanField(default=False)
      date = models.DateTimeField(auto_now = True) 
      classroom = models.ForeignKey(Classroom, related_name = 'classroom_membership')
      member = models.ForeignKey(User, related_name = 'user_membership')

我哪里错了?

最佳答案

如上所示:

http://docs.djangoproject.com/en/dev/topics/db/models/#intermediary-manytomany

Unlike normal many-to-many fields, you can't use add, create, or assignment (i.e., beatles.members = [...]) to create relationships



我猜您的代码在“form.save_m2m()”行上跳了起来,这是不必要的,因为您已经手动创建了成员资格。

关于django - django无法在用于指定中介模型的ManyToManyField上设置值。改用Manager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3091328/

相关文章:

Django,在 self 类内的多对多关系中,我如何在ORM方面相互引用?

django 在生产服务器上打印信息

python - Django-Filter:在搜索时动态创建查询集或在搜索之前隐藏查询集

django - csrfmiddlewaretoken 和 csrftoken 是什么关系?

javascript - 从另一个表单中包含的文本字段传递参数

python - 在 post_save 上添加 M2M

iot - ETSI-M2M 标准和 OneM2M 标准有什么区别?

django - 如何用SSL实现Nginx 'Service Unavailable'?

javascript - 单击另一行编辑时启用表单

javascript - 尝试在一个脚本中创建两个多项选择题