我当前正在使用Django 2.2.4版本,并试图创建一个将更新我的模型的编辑按钮。尝试保存更新后的值时,发生TypeError,它指出“ full_clean()缺少1个必需的位置参数:'self'”。我似乎无法从我的代码中检测到任何错误。预先感谢您的帮助。
我的views.py文件
def lab_edit(request, pk, template_name='webapp/lab_edit.html'):
lab= get_object_or_404(Labs, pk=pk)
form = LabForm(request.POST or None, instance=Labs)
if request.method == "POST":
if form.is_valid():
form.save()
return redirect('lab')
return render(request, template_name, {'form':form})
我的lab_edit.html文件
<div class='container'>
<h2>EDIT LAB</h2>
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
</div>
我的LabForm
class LabForm(forms.ModelForm):
class Meta:
model = Labs
fields = ('labcode', 'name','administrator')
答案 0 :(得分:2)
您的LabForm
作为模型{em> class 而不是模型对象,而作为instance=
。您应该通过传递lab
来解决此问题:
def lab_edit(request, pk, template_name='webapp/lab_edit.html'):
lab = get_object_or_404(Labs, pk=pk)
if request.method == 'POST':
form = LabForm(request.POST, instance=lab)
if form.is_valid():
form.save()
return redirect('lab')
else:
form = LabForm(instance=lab)
return render(request, template_name, {'form':form})
通过传递对 class 的引用,您基本上已经在该类上调用了full_clean
,因此出现了错误。
请注意,您应该不要使用request.POST
,因为空的POST请求仍然可以是有效的POST请求。or None