Django创建视图不保存任何数据

wbrvyc0a  于 2022-11-18  发布在  Go
关注(0)|答案(1)|浏览(158)

我的创建视图在创建后很久才重定向到博客主页,但
我找不到任何已创建的帖子或管理员页面的帖子,有人能帮助请
这是我观点

@login_required
def add_post(request):
    if request.method == 'POST':
        post_form = PostForm(request.POST, request.FILES, instance=request.user)
        snippet_form = SnippetForm(request.POST)
        if post_form.is_valid() and snippet_form.is_valid():
            post = post_form.save(commit=False)
            snpt = snippet_form.save(commit=False)
            post.creator = request.user
            snpt.id = post.id
            post.save() and snpt.save()
            return redirect('blog:index')
    else:
        post_form = PostForm()
        snippet_form = SnippetForm()
    return render(request, 'blog/add_post.html', {'post': post_form, 'snpt': snippet_form})

这个视图有什么问题,因为我可以从管理员添加新帖子来保存新帖子,但从客户端它不保存任何东西
我是否需要在此处使用model create()方法?
我会提供任何必要的片段,但问题就在这个片段中*任何帮助都是非常重要的**

更新日期:

我的帖子模型

class Post(models.Model):
    ...
    creator = models.OneToOneField(settings.AUTH_USER_MODEL...
    snippet = models.OneToOneField(Snippet,...
    ...
wnrlj8wa

wnrlj8wa1#

post.save() and snpt.save()

应为:

post.save()
snpt.save()

我怀疑您在想(通过使用关键字and)您希望确保同时保存两个模型,但您实际上是在要求Python比较两个函数的返回结果,以查看它们是否都为True;这会破坏你的代码(因为保存()返回None,只有你的第一个save()在运行,因为Python甚至不会执行第二个save(),因为当第一个save()已经返回Falsey时,它们不可能都是True)。
您可能会发现this question在您的方案中非常有用。

相关问题