Как проверить, что изображение существует, и удалить его, прежде чем добавить новое изображение - Django - PullRequest
0 голосов
/ 29 июля 2011

У меня есть вид для профиля учетной записи. Я бы хотел, чтобы пользователь мог редактировать изображение после того, как он его добавил. У меня есть код редактирования. Как только пользователь редактирует изображение, он добавляет это изображение в базу данных, но не удаляет предыдущее изображение.

Итак, вопрос в том, как мне сделать следующее:

Проверьте, существует ли изображение Если это действительно удалить его Добавить новое изображение

Мое мнение находится ниже, любые предложения приветствуются.

@login_required
def profile_img_edit(request, username, id):
'''Edit a Profile Image'''
    messages.success(request, "Your changes were saved!")

    user = get_object_or_404(User, username=username)
    if request.user != user:
        return permission_denied(request)
    profile_img = get_object_or_404(ProfileImage, user=user, id=id)
    if request.method == 'POST':
        form = Profile_ImageEditForm(request.POST, request.FILES, instance=profile_img)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(
                reverse('profile_img', kwargs={
                    'username': request.user.username,
                    'id': profile_img.id}))
    else:
        form = Profile_ImageEditForm()

    return render_to_response('accounts/profile_img_edit.html', {
        'form':form,
        'object':profile_img
    }, context_instance=RequestContext(request))

1 Ответ

1 голос
/ 29 июля 2011

Вместо добавления нового экземпляра profile_img просто обновите старый в db:

ProfileImg.objects.filter(user=user).update(img_path='new_image_path')

Не уверен, если вы уже есть, но вы должны подключить свою модель ProfileImg к вашей модели User с помощью ForeignKey.

...