2016-07-26 19 views
-1

問題は、フォームからManyToManyFieldを保存できないことです。ManyToManyFieldを保存できません

forms.py

class addGoods(forms.Form): 
    ... 

    permission = form['permission'], 

    ... 

models.py

class Add_good(models.Model): 
    ... 

    permission = models.ManyToManyField(Permission, related_name="+") 

    ... 

views.py

if request.method == "POST": 
    form = addGoods(request.POST) 

    if form.is_valid(): 

     form = form.cleaned_data 
     newGood = Add_good(permission = form['permission']) 

私はこのような何かをしようとしましたが、エラー

もあります

views.py

if request.method == "POST": 
     form = addGoods(request.POST) 

     if form.is_valid(): 

      form = form.cleaned_data 
      newGood = Add_good(permission = form['permission']) 

      to_do_list = newGood.save(commit=False) 
      for permis in form['permission']: 
       to_do_list.permission.add(permis) 
       to_do_list.save() 
      newGood.save_m2m() 

トレースバック:

Exception Type: TypeError at /goods/add 
Exception Value: 'permission' is an invalid keyword argument for this function 
+0

エラーは何ですか? – khajvah

+0

@khajvahはトレースバックを追加します –

+1

まあ、このエラーは別の問題に関するものです。あなたはそれを見つけるのに十分なコードを掲載していません。 「許可」はどこから来たのですか? – khajvah

答えて

2

問題はここにある: newGood = Add_good(permission = form['permission'])

許可が多対多分野なので、それがあることを取ることができないので、あなたのテーブルには、直接、permisionフィールドがありません引数。あなたが許可を追加したモデルのエントリを作成することができます

また
newGood = Add_good.objects.create(...) 
newGood.permission.add(Permissions.objects.get(...)) 

あなただけpermission = form['permission']をしたとして、あなたはあなたのビューで手動でクエリを作る代わりにする必要がありますので、あなたのフォームは、権限のモデルをすることはありません/ forループ内にあります。

関連する問題