django не Может установленные значения на ManyToManyField, который указывает посредническую модель. Используйте менеджера вместо этого

я продолжаю работать, экономя на той же форме две таблицы - наличие m2m отношения. Я не успешно выполняюсь, моя ошибка сохраняется с чем-то как: не Могут установленные значения на ManyToManyField, который указывает посредническую модель. Используйте менеджера Членства вместо этого, где Членство мой 'через таблицу'.

мой код:

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

где я неправильно?

19
задан tshepang 15 July 2014 в 20:05
поделиться

1 ответ

Как видно на:

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

В отличие от обычного "многие ко всем" много полей, вы не можете использовать add, create или assignment (например, beatles.members = [...]) для создания отношений

Я думаю, ваш код спотыкается о строке "form.save_m2m ()", в этом нет необходимости, поскольку вы уже создали членство вручную.

18
ответ дан 30 November 2019 в 02:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: