首页 > 解决方案 > 提交后返回表单的pk

问题描述

提交后我需要返回表单的 PK,以便我可以在第二个表单中使用它。我在网上找到的关于返回 PK 的所有内容都是针对 http 重定向,而不是将其存储在变量中并在视图中使用它

看法

def createPostView(request):

currentUser = request.user
postForm = PostForm()
if request.method == 'POST':
    postForm = PostForm(request.POST, request.FILES)
    if postForm.is_valid():
        PostFormID = postForm.save(commit=False)
        PostFormID.author = request.user
        PostFormID.save()
        return #need to get pk from this form

    for f in request.FILES.getlist('images'):          
        test = PostImagesForm(request.POST, request.FILES)
        if test.is_valid():
            instance = test.save(commit=False)
            instance.post = #need to use pk here
            instance.images = f
            instance.save()   
            return HttpResponseRedirect("/")
           
return render(request, 'blog/post_form.html', {'postForm': postForm, 'PostImagesForm':PostImagesForm})

标签: django

解决方案


表单的save()方法返回刚刚创建/更新的实例。因此,您将通过以下操作获得距离的 PK 值,

instance = PostFormID.save()
my_pk_value = instance.pk

推荐阅读