Django: функция редактирования без изменения данных изображения - PullRequest
0 голосов
/ 22 марта 2011

У меня есть функция редактирования, которую я хочу, чтобы пользователь мог редактировать объект Picture (теги), сохраняя старое изображение. Форма ищет фотографию, но я хочу, чтобы пользователь мог изменить изображение - просто другую информацию.

Как передать исходные данные изображения из объекта изображения в PictureForm для проверки?

Мой взгляд:

@csrf_protect
@login_required
def edit_picture(request, picture_id, template_name="picture/newuserpicture.html"):

    picture = get_object_or_404(Picture, id=picture_id)

    if request.user != picture.user:
        return HttpResponseForbidden()

    if request.method == 'POST':
        form = PictureForm(request.POST or None, request.FILES or None, instance=picture)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/picture/%d/' % picture.id )

    else:
        form = PictureForm(instance=picture) 

    data = { "picture":picture, "form":form } 

    return render_to_response(template_name,
        data,
        context_instance=RequestContext(request))

Ответы [ 2 ]

0 голосов
/ 22 марта 2011

Я думаю, что этот поток должен дать вам подсказку, как сделать существующие поля доступными только для чтения: В форме Django, как сделать поле доступным только для чтения (или отключенным), чтобы его нельзя было редактировать?

Если вы хотите полностью скрыть изображение и наткнуться на ошибки проверки, так как поле помечено как обязательное в определении модели (blank=True), другой вариант - переопределить метод сохранения формы и настроить обязательный атрибут поля.

Что-то вроде этого:

   def __init__(self, *args, **kwargs):
       super(PictureForm, self).__init__(*args, **kwargs)

       for key in self.fields:
           self.fields[key].required = False
0 голосов
/ 22 марта 2011

Полагаю, я не уверен, как просто прокомментировать исходный вопрос, но что вы подразумеваете под проверкой? Если вам просто нужно убедиться, что изображение объекта рисунка на самом деле остается тем же после того, как форма заполнена, не могли бы вы сделать несколько пользовательских чистых методов для формы? в чистом методе вы можете сравнить все метаданные и изображение, а затем перейти к сохранению форм.

...