Как скрыть поле первичного ключа в форме Django - PullRequest
5 голосов
/ 09 января 2009

Я бы предпочел, чтобы мое поле первичного ключа не было видно на моей странице редактирования. Если я сделаю это AutoField, он не отображается в форме HTML. Но тогда значение первичного ключа также отсутствует в моих данных POST. Есть ли простой способ визуализации AutoField как скрытого поля?

Ответы [ 2 ]

9 голосов
/ 10 января 2009

Если вы не хотите, чтобы ваш пользователь мог что-то изменить в форме, вам следует вместо этого поместить это в 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))
6 голосов
/ 09 января 2009

вы можете указать его виджет как скрытое поле

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...