使用表单的Django更新模型条目失败

时间:2016-08-08 13:48:12

标签: python django forms

我想使用表单更新模型条目。问题是,不是更新条目,而是创建一个新条目。

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']

1 个答案:

答案 0 :(得分:2)

您未正确检查POST方法的请求。 request.POST不是布尔值,它包含一个post变量字典,并且总是会在其中包含CSRF令牌,因此它总是&#34; truthy&#34;。你需要的是request.method

而不是:

if request.POST:

将其替换为:

if request.method == "POST":