5

我希望我的主键字段在我的编辑页面中不可见。如果我将其设为 AutoField,则不会以 HTML 表单呈现。但是主键值也不在我的 POST 数据中。有没有一种简单的方法可以将 AutoField 呈现为隐藏字段?

4

2 回答 2

9

如果您不希望您的用户能够更改表单上的某些内容,那么您应该将其放置在 URL 或其他一些上下文中。否则,您将面临安全问题(或至少是额外的用例)。

在 urls.py 中:

(r'^edit/?P<my_id>[\d]+)/$', views.edit),

在 view.py 中:

from django.shortcuts import render_to_response, get_object_or_404
from models import MyModel

def edit(request, my_id):
    obj = get_object_or_404(MyModel, id=my_id)
    if request.POST:
        form = MyForm(request.POST, instance=obj)
        if form.is_valid():
            form.save()
            #
            # do other stuff....
            #
    else:
        form = MyForm(instance=obj)

    return render_to_response(template_name, {
        "form": form
    }, context_instance=RequestContext(request))
于 2009-01-09T22:47:51.620 回答
6

您可以将其小部件指定为隐藏字段

于 2009-01-09T18:17:07.720 回答