我想使用表单更新模型条目。问题是,不是更新条目,而是创建一个新条目。
def edit(request, c_id):
instance = get_object_or_404(C, id=int(c_id))
if request.POST:
form = CForm(request.POST, instance=instance)
if form.is_valid():
form.save()
return redirect('/a/b', c_id)
else:
form = CForm(instance=instance)
args = {}
args.update(csrf(request))
args['form'] = form
args['c_id'] = c_id
return render_to_response('a/b.html', args)
HTML code:
<form action="/a/edit/{{ c_id }}/" method="post">
{% csrf_token %}
{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }} {{ field }}
{% if field.help_text %}
<p class="help">{{ field.help_text|safe }}</p>
{% endif %}
</div>
{% endfor %}
<input type="submit" value="Submit"/>
</form>
CForm类代码
class CForm(forms.ModelForm):
class Meta:
model = C
fields = ['name', 'code']
答案 0 :(得分:2)
您未正确检查POST
方法的请求。 request.POST
不是布尔值,它包含一个post变量字典,并且总是会在其中包含CSRF令牌,因此它总是&#34; truthy&#34;。你需要的是request.method
。
而不是:
if request.POST:
将其替换为:
if request.method == "POST":