python - django 编辑表单不保留值

标签 python django django-forms

我为 addedit 表单创建了一个简单的 Django 表单。 我的问题出在我使用 ModelChoiceField 的人员字段中。

在编辑表单中,除了该字段 ModelChoiceField 之外,所有值都解析正确。 在编辑表单中,该字段为空并且不保留值,知道为什么吗?

def edit_work(request, pk):
    instance = get_object_or_404(work, id=pk)
    form = workForm(request.POST or None,instance=instance)
    if form.is_valid():
        note = form.save(commit=False)
        note.save()
        return HttpResponseRedirect('/work/success/')
    return render(request,'edit_work.html', {'form': form})


 def add_work(request):
     if request.method == "POST":
         form = workForm(request.POST)
         if form.is_valid():
             note = form.save(commit=False)
             note.save()
             return render(request, "succes/erga_success.html")
     else:
         form = workForm()
     return render(request, 'add_work.html',{'form':form})

表单.py

class workForm(forms.ModelForm):
    peaople=forms.ModelChoiceField(queryset=User.objects.all(),required=False, error_messages={
            'invalid': _("---")})
    class Meta:
        model = work
        fields = (__all__")

html 页面:

     <form  enctype="multipart/form-data" method="POST" action="">{% csrf_token %}
     {{form.peaople}}
     .........
     <input type="submit" value="create">
     </form>

最佳答案

该值不会被保留,因为您没有将其保存在任何地方,也没有分配它。

  1. 将值保存在某处。
# views.py

# in both view functions
if form.is_valid():
    note = form.save(commit=False)
    note.save()
    somemodel.people = form.cleaned_data.get("people")
    somemodel.save()
  • 使用保存的值初始化表单
  • def edit_work(request, pk):
        instance = get_object_or_404(work, id=pk)
        form = workForm(request.POST or None,instance=instance, initial={'people': somemodel.people})
        if form.is_valid():
            note = form.save(commit=False)
            note.save()
            somemodel.people = form.cleaned_data.get("people")
            somemodel.save()
            return HttpResponseRedirect('/work/success/')
        return render(request,'edit_work.html', {'form': form})
    

    关于python - django 编辑表单不保留值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55734083/

    相关文章:

    python - 创建 Django QuerySet 对象后修改它

    python - 通过 Python ElementTree 查找 XML 树中的所有子节点

    mysql - 如何在 Django 中查询时减少数据库命中次数

    python - django - 根据翻译后的名称在管理界面中对模型进行排序

    django - 自定义表单作者 - 自动将作者保存到数据库

    python - 模块 'avro.schema' 没有属性 'parse'

    python - 语法错误 : invalid syntax to repo init in the AOSP code

    python - django中api和REST api的区别

    python - 如何在 Django 应用程序中对列表和集合使用 Redis 命令

    django - 当 commit=False 时,Django 表单 save() 方法中是否需要 save_m2m() ?