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 に答える