我有一个表单页面可以从数据库中编辑我的对象,但是当我使用编辑按钮访问它们时,它会转到URL http://localhost:8000/acoes/edit/1,但我无法在表单字段中看到对象详细信息。它只是空的,好像我要创建一个新对象(如果我尝试它会创建)
有什么建议吗?我在网上发现的每个帖子和问题都表明代码可以像这样工作,但它不是。
在模板acoes_form.html
上EOF
on views.py
<form method="post">
<div class="form-group">
{% csrf_token %}
{{form.as_p}}
</div>
<input type="submit" value="Gravar dados" class="btn btn-success" />
</form>
on forms.py
@login_required(login_url="/login")
def acoes_edit(request, pk, template_name='acoes/acoes_form.html'):
if request.user.is_superuser:
acoes= get_object_or_404(Acoes, pk=pk)
else:
acoes= get_object_or_404(Acoes, pk=pk, user=request.user)
form = AcoesForm(request.POST or None, instance=acoes)
if form.is_valid():
form.save()
return redirect('acoes_list')
return render(request, template_name, {'form':AcoesForm})
答案 0 :(得分:1)
按如下方式更改您的观点:
@login_required(login_url="/login")
def acoes_edit(request, pk, template_name='acoes/acoes_form.html'):
if request.user.is_superuser:
acoes= get_object_or_404(Acoes, pk=pk)
else:
acoes= get_object_or_404(Acoes, pk=pk, user=request.user)
form = AcoesForm(request.POST or None, instance=acoes)
if form.is_valid():
form.save()
return redirect('acoes_list')
return render(request, template_name, {'form': form})
您不小心引用了表单类而不是表单实例。
在旁注中,如果此人将数据发布到视图,您可能只想保存表单,例如
@login_required(login_url="/login")
def acoes_edit(request, pk, template_name='acoes/acoes_form.html'):
if request.user.is_superuser:
acoes= get_object_or_404(Acoes, pk=pk)
else:
acoes= get_object_or_404(Acoes, pk=pk, user=request.user)
form = AcoesForm(request.POST or None, instance=acoes)
if request.method == 'POST' and form.is_valid():
form.save()
return redirect('acoes_list')
return render(request, template_name, {'form': form})
答案 1 :(得分:1)
错误在最后一行,您传递的是表单类而不是表单对象。
return render(request, template_name, {'form':form})