在Django中保存模型后返回主键

4 投票
2 回答
5706 浏览
提问于 2025-04-18 02:07

我看过这份文档 这里,还有几个类似的Stack Overflow帖子,但在我保存表单后,还是无法获取新模型的ID/主键。系统一直告诉我 'ProposalForm' object has no attribute 'id'我该如何在保存后立即返回ID呢?

这是视图代码:

def proposal_create_view2(request):
        if request.method == 'POST':
            form = ProposalForm(data=request.POST)
            if form.is_valid():
                form.save()
                response = {}
                response['proposalID'] = form.id
                return response

2 个回答

1

ModelForm.save() 的返回值是新的模型对象。你可以从这个对象中获取主键(PK)。

5

my_saved_model = my_model_form.save()

打印 my_saved_model.pk

补充说明:

def proposal_create_view2(request):
    if request.method == 'POST':
        form = ProposalForm(data=request.POST)
        if form.is_valid():
            mysaved_model = form.save()
            response = {}
            response['proposalID'] = mysaved_model.id #or .pk
            return render(request , 'my_template_file.html' , response) 

            #return response statement is NOT valid as you need to return an HttpResponse not a dict

查看 Django 文档关于 HttpResponses 的内容

撰写回答