首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法保存ManyToManyField

无法保存ManyToManyField
EN

Stack Overflow用户
提问于 2016-07-26 19:37:59
回答 1查看 91关注 0票数 0

所以问题是我不能从表单中保存ManyToManyField。

这是我的表单: forms.py

代码语言:javascript
复制
class addGoods(forms.Form):
   ...

    permission = form['permission'],

   ...

我的模型: models.py

代码语言:javascript
复制
class Add_good(models.Model):
   ...

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

   ...

在我看来,如果请求方法等于"POST",我会尝试将这些数据保存到我的模型中: views.py

代码语言:javascript
复制
if request.method == "POST":
    form = addGoods(request.POST)

    if form.is_valid():

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

我尝试过这样做(见下文),但也有错误: views.py

代码语言:javascript
复制
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()

和我的回溯回溯:

代码语言:javascript
复制
Exception Type: TypeError at /goods/add
Exception Value: 'permission' is an invalid keyword argument for this function

如你所见,permission出了点问题,我无法保存它

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-26 19:53:08

问题出在这里:newGood = Add_good(permission = form['permission'])

权限是ManyToMany字段,因此您的表没有直接具有permision字段,因此它不能接受该参数。您可以创建模型条目,然后添加权限:

代码语言:javascript
复制
newGood = Add_good.objects.create(...)
newGood.permission.add(Permissions.objects.get(...))

此外,您的表单不会像刚才那样从权限创建模型,因此您需要在视图中进行手动查询,而不是在permission = form['permission']循环中使用/。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38588878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档