본문 바로가기
Coding/Python

Django delete(), add(), remove(), @property 정리

by Hide­ 2018. 4. 23.
반응형

범위 : #1-46 Deleting my own comment ~ #1-52 Getting Followers List


1.

댓글을 지우기 위해 댓글의 번호와 요청한 유저를 같이 인자로 넘겨준다.


user = request.user
comment = models.Comment.objects.get(id=comment_id, creator=user)
comment.delete()

그리고 delete() 메소드를 통해 삭제해주면 된다.


2.

최근 가입한 순서대로 유저의 목록을 보고싶다.

그중에서도 5개만 짜르고 싶다면 다음과 같이 입력한다.


last_five = models.User.objects.all().order_by('-date_joined')[:5]

Django의 ORM때문에 직접 쿼리를 작성할 필요 없이 order_by() 함수를 이용하여

정렬시킬 수 있다.

AbstractUser에 date_joined이 기본적으로 정의되어 있으므로 해당 값을 이용하여 정렬한다.


3.

지금까지 작업한 내용을 바탕으로 새로운 유저를 추가하려는 경우 following, follower값이 없으면 추가가 되지 않는다.

그걸 방지하기 위해 기존 users/models.py에 blank=True속성을 넣어준다.


followers = models.ManyToManyField("self", blank=True)
following = models.ManyToManyField("self", blank=True)


4.

이제 팔로우 작업을 할 차례이다.

현재 User모델에 followers라는 필드를 ManyToManyField로 만들어놨다.

ManyToManyField에 값을 추가하는 방법은 add() 를 사용하는 것이다.


user_to_follow = models.User.objects.get(id=user_id)
user.following.add(user_to_follow)
user.save()

위처럼 팔로우 할 유저의 값을 얻은 이후 add(), save()를 거치면 된다.

언팔로우의 경우 다른코드는 전부 같지만 add()가 아닌 remove()를 통해 지워주면 된다.


5.

다시 한번 @property에 대해서 정리하고 넘어가자.

models.py에 정의한 필드들은 실제 데이터베이스에 컬럼형태로 저장이 된다.

하지만 @property아래에 함수를 작성함으로써 데이터베이스에 저장은 되지 않지만

특정한 값들을 뽑아내는 함수를 만들 수 있다.

'Coding > Python' 카테고리의 다른 글

Django Partial Update 정리  (0) 2018.04.30
Django Taggit으로 해시태그 검색 정리  (0) 2018.04.29
Django Getting User Feed 정리  (0) 2018.04.22
Django Restframework 정리  (0) 2018.04.20
Django Admin 페이지 수정 정리  (0) 2018.04.20