class ImageDetail(APIView):
def find_own_image(self, image_id, user):
try:
image = models.Image.objects.get(id=image_id, creator=user)
return image
except models.Image.DoesNotExist:
return None
def put(self, request, image_id, format_=None):
user = request.user
image = self.find_own_image(image_id, user)
if image is None:
return Response(status=status.HTTP_401_UNAUTHORIZED)
serializer = serializers.InputImageSerializer(
image, data=request.data, partial=True)
if serializer.is_valid():
......
def delete(self, request, image_id, format=None):
user = request.user
image = self.find_own_image(image_id, user)
if image is None:
return Response(status=status.HTTP_401_UNAUTHORIZED)
image.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
기존의 ImageDetail에 delete까지 추가되었다.
내가 만든 이미지를 찾는 과정은 새로운 function으로 만들었다.
여기서 문제가 머냐면
삭제할 때, 남들이 해 둔 좋아요 코멘트도 삭제 되는데!
class Notification(image_models.TimeStampedModel) :
TYPE_CHOICES = (
('like', 'Like'),
('comment', 'Comment'),
('follow', 'Follow')
)
creator = models.ForeignKey(user_models.User, on_delete=models.PROTECT, related_name='creator')
to = models.ForeignKey(user_models.User, on_delete=models.PROTECT, related_name='to')
Notification_type = models.CharField(max_length=20, choices=TYPE_CHOICES)
image = models.ForeignKey(image_models.Image, on_delete=models.PROTECT, null=True, blank=True)
comment = models.TextField(null=True, blank=True)
class Meta:
ordering = ['-created_at']
Notification에 on_delete속성값이 models.PROTECT로 보호받고 있다.
그래서 댓글, 좋아요가 있는 글은 삭제가 불가능해진다.
https://stackoverflow.com/a/38389488/1136110
다음 주소에서 해결방법이 나와있는데
on_delete 를 CASCADE방식으로 해결하면 된다는 것
'BackEnd > Django' 카테고리의 다른 글
[Django] User password Change (0) | 2018.11.08 |
---|---|
[Django]User Profile 수정하기 (0) | 2018.11.08 |
[Django] 이미지 수정하기! (0) | 2018.11.07 |
[Django] 좋아요 리스트 보기 (0) | 2018.11.07 |
[Django]단일 이미지 보기 (0) | 2018.11.07 |