gpt4 book ai didi

Django 更新表单

转载 作者:行者123 更新时间:2023-12-04 17:38:56 27 4
gpt4 key购买 nike

我在一个页面中创建一个表单,然后在另一个页面中我试图拉出表单(填充了已经保存在其中的数据)并希望对其进行更改,以便在我保存时它会覆盖实例而不是创建另一个。

def edit(request):

a = request.session.get('a', None)
form = Name_Form(request.POST, instance=a)
if form.is_valid():
j = form.save( commit=False )
j.save()

这似乎有效,但它不会预填充表单。相反,它以一个已经“提交”为空白的空白表格开始(您会看到所有告诉您有关必填字段的错误)

我也尝试使用
form = Name_Form(initial={'id':a.id})

预填充表单。但是如果我这样做而不是 form = Name_Form(request.POST, instance=a)行它不会覆盖实例,它将创建一个新实例。

我似乎无法将这两个功能结合起来。

任何帮助表示赞赏

最佳答案

如果您使用 request.POST 设置表单,它将使用在 POST 数据中找到的值填充所有表单字段。
如果您在 GET 请求(其中 request.POST 为空)上执行此操作,则使用空值填充它。

尝试:

def edit(request):

a = request.session.get('a', None)

if a is None:
raise Http404('a was not found')

if request.method == 'POST':
form = Name_Form(request.POST, instance=a)
if form.is_valid():
j = form.save( commit=False )
j.save()
else:
form = Name_Form( instance = a )

关于Django 更新表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9281926/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com