✅ 게시물 수정 역시 DetailView에서 진행한다.
✅ urls.py에 '/<int:posting_id>'를 추가했다. <- urls.py 보러가기
1.1 수정하고 싶은 게시물 사진/이미지 id
1.2 사용자의 username
1.3 사용자의 게시물 description 설명란
일단 프론트에서 보내주는 내용을 data라는 변수에 다 담는다.
PostingDetailView
의 경우 프론트에서 posting_id
도 넘겨주기 때문에 우리는 일단 해당 posting_id
가 데이터베이스에 존재(filter(id=posting_id)
)하는지 확인해야 한다. 그리고 게시물이 데이터베이스 안에 존재한다면 Posting.objects.get(id=posting_id)
으로 해당 게시물의 id를 posting
변수에 담는다.
우리는 이제 객체인 posting
변수로 image_url
, username.id
, description
을 접근할 수 있다.
PATCH은 일괄 수정(PUT)이 아닌 일부 수정이기 때문에 .get()
함수를 이용해서 사용자가 해당 값을 보내줬으면 수정하고(ex. data['description']), 안보내줬으면 지금 현재 저장되어 있는 데이터값(ex. posting.description)을 그대로 keep 한다.
keypoint는 username은 FK이기 때문에 User.objects.get()
parameter 안에 id=data.get('user.User', posting.username.id)
을 넣어서 해당 id값이 맞는지 확인해야 한다.
그리고 꼭! save()
를 해 update를 저장해야 한다.