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

Posted by Hide­
2018.04.23 18:16 Coding/Django

범위 : #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아래에 함수를 작성함으로써 데이터베이스에 저장은 되지 않지만

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



다른 사람들이 많이 읽은 글
이 댓글을 비밀 댓글로

티스토리 툴바