首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django使用get_or_create()处理新的ManyToManyField项

问Django使用get_or_create()处理新的ManyToManyField项
EN

Stack Overflow用户
提问于 2015-04-14 16:17:19
回答 1查看 90关注 0票数 0

我有一个带有ManyToManyField的模型,在我的视图中,我希望能够将新选项添加到生成的选择框中

如何使用get_or_create函数处理这些新项目?

我想在保存表单之前检查表单的有效性,但它永远不会有效,因为我必须创建所有新的ManyToMany项。

在此期间,如果表单无效,我不想添加新项目...

所以我被这个不起作用的代码卡住了:

代码语言:javascript
复制
def add_entry(request):
    if request.method == 'POST':
        form = EntryForm(data=request.POST)
        model_instance = form.save(commit=False)
        for tag in model_instance.tags.all():
            t, created = Tag.objects.get_or_create(author=request.user, title=tag.title)
            model_instance.tags.add(t)
        if form.is_valid():
            model_instance.save()
            return HttpResponseRedirect("/")
    else:
        form = EntryForm()
    return render_to_response(
        'add_entry.html',
        {'form' : form },
        context_instance=RequestContext(request))

编辑:

我的代码现在是

代码语言:javascript
复制
def add_entry(request):
    if request.method == 'POST':
        form = EntryForm(data=request.POST)
        if form.is_valid():
            model_instance = form.save(commit=False)
            model_instance.save()
            form.save_m2m()
            return HttpResponseRedirect("/")
        else:
            print form.errors
    else:
        form = EntryForm()
    return render_to_response(
            'add_entry.html',
            {'form' : form },
            context_instance=RequestContext(request)
        )

我可以保存现有的标签,但我不能动态添加新的标签...

EN

回答 1

Stack Overflow用户

发布于 2015-04-28 03:56:52

我猜您正在使用某种类型的JS来动态添加tags。我建议你更进一步,创建一个API端点,在那里你可以实际保存创建的标签,这样它们就可以成为选择框的有效选项。

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

https://stackoverflow.com/questions/29622341

复制
相关文章

相似问题

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