【问题标题】:Modelform is not populating its field with current valuesModelform 未使用当前值填充其字段
【发布时间】:2018-12-17 11:18:36
【问题描述】:

我正在制作一个视图,如果它再次被编辑,它将预先填充它的字段,否则提供一个空白的模型表单。

def ViewProfile(request,slug):
ProfileResults=Profile.objects.filter(DiaryUser=slug)
if request.method=='POST':
    if Profile.objects.filter(DiaryUser=slug).exists():
        ProfileAlready=get_object_or_404(Profile,DiaryUser=slug)
        form=UpdateProfileForm(request.POST,request.FILES,instance=ProfileAlready)
        if form.is_valid():
            form.save()
    else:
        form=UpdateProfileForm(request.POST,request.FILES)
        if form.is_valid():
            ProfileUpdate=form.save(commit=False)
            ProfileUpdate.DiaryUser=slug
            ProfileUpdate.save()
    return redirect('Display',**{'slug':slug})
else:
    form=UpdateProfileForm()
    return render(request,'Mobile/ViewProfile.html',{'form':form,'slug':slug,'ProfileResults':ProfileResults})

但它不会预先填充其字段,否则它工作正常。谁能提供建议

【问题讨论】:

    标签: django python-3.x django-models django-forms django-views


    【解决方案1】:

    你可以这样试试:

    def ViewProfile(request,slug):
    
        ProfileAlready=get_object_or_404(Profile,DiaryUser=slug)  # <-- Move this code in outer scope of POST request
        if request.method=='POST':
            # rest of the code
        else:
            form=UpdateProfileForm(instance=ProfileAlready)  # Pass instance here
            # rest of the code 
    

    【讨论】:

    • 抱歉,我听不懂你想表达什么
    • 我已将 ProfileAlready 移出 if 条件。我已经将它作为实例传递给 else 块。请比较答案和问题
    • 我的意思是它也没有预先填充字段
    猜你喜欢
    • 2019-04-04
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多