[점프투장고] 이미지 수정 문제

안녕하세요, 몇 날 며칠을 고생하다 안되서 질문 드립니다.ㅠㅠ

점프투장고 게시판을 완성하고 추가적으로 게시글에 이미지를 첨부하고자 합니다.

글 작성시 이미지 등록은 잘 되고, 수정시도 이미지가 잘 들어가는데,,

문제는 글 수정시, 새로운 이미지를 첨부하면 기존 이미지를 없애고 싶은데, 잘 구현이 안되네요..

현재는 글 수정시 새로운 이미지를 첨부하면, 기존 이미지 + 새로운 이미지가 같이 등록이 됩니다..

혹시 어떤 방식으로 구현해 볼 수 있을까요?

model.py: 클래스 추가

class Photo(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE, null=True)
    image = models.ImageField(upload_to=image_name_and_path, null=True, blank=True)

question_view.py : 질문등록/질문수정 동일하게 내용 추가

        if form.is_valid() :  # and photo_form.is_valid():
            question = form.save(commit=False)
            question.author = request.user #추가한 속성 author 적용
            question.create_date = timezone.now()
            question.save()

            # name 속성이 imgs인 input 태그로부터 받은 파일들을 반복문을 통해 하나씩 가져온다
            for img in request.FILES.getlist('imgs'):
                # Photo 객체를 하나 생성한다.
                photo = Photo()
                # 외래키로 현재 생성한 question의 기본키를 참조한다.
                photo.question = question
                # imgs로부터 가져온 이미지 파일 하나를 저장한다.
                photo.image = img
                # 데이터베이스에 저장
                photo.save()

question_form.html : 내용 추가

    <form method="post" class="post-form my-3" enctype="multipart/form-data">
    <div class="form-group">
            <label>이미지 업로드</label>
            <input type="file" name="imgs">
        </div>

uno 625

M 2021년 3월 3일 11:47 오전

목록으로
1개의 답변이 있습니다. 1 / 1 Page

수정할 때는 다음처럼 등록된 이미지를 먼저 삭제하면 되지 않을까요?

question.photo_set.delete()

박응용

2021년 3월 3일 1:27 오후

+1 감사합니다! question.photo_set.all().delete() 를 하니 수정시 이미지 삭제가 되네요, (question.photo_set.delete()는 에러가 뜨네요.. 무슨 차인지..) - uno님, 2021년 3월 3일 1:58 오후 추천 , 대댓글
@uno님 아. 착각했네요. _set은 RelatedManager 로 delete는 지원하지 않고 remove(obj)만 지원하네요. 따라서 모두 삭제하려면 말씀하신것처럼 all().delete() 하면 됩니다. RelatedManager 는 다음에서 자세히 확인해 보실수 있습니다. https://docs.djangoproject.com/en/3.1/ref/models/relations/ - 박응용님, 2021년 3월 3일 3:04 오후 추천 , 대댓글