[Westagram] : 팔로우
과제
코드
models.py
from django.db import models
from users.models import TimeStampedModel
class Following(TimeStampedModel) :
following = models.ForeignKey('users.User', on_delete=models.CASCADE, related_name='following_giviing')
follower = models.ForeignKey('users.User', on_delete=models.CASCADE, related_name='following_taking')
class Meta :
db_table = 'followings'
내가 sns를 하지 않아서 팔로우/팔로잉에 대해 엄청 헷갈렸다;;
팔로워는 나를 따르는 사람이라는 뜻에서 나를 팔로우한 사람
팔로잉은 내가 팔로우하는 사람
그리고 두 개의 변수 모두 User를 참조하는데, 이럴 경우 makemigrations을 하면
충돌이 발생한다.
(자세한 건 여기에 기입해놓음)
그래서 related_name을 설정했는데, 도무지 좋은 변수명이 생각나지 않아서
저렇게 쓰게 됐다;;
views.py
import json
from django.views import View
from django.http import JsonResponse
from users.utils import login_decorator
from followings.models import Following
class FollowingView(View) :
@login_decorator
def post(self, request) :
try :
data = json.loads(request.body)
#following = 내가 팔로우 하는 사람 related_name = following_giviing
#follower = 나를 팔로우 하는 사람 related_name = following_taking
following_id = data['following_id']
follower_id = data['follower_id']
if following_id == follower_id :
return JsonResponse({'message':'자기자신은 팔로우 할 수 없습니다'}, status=400)
if Following.objects.filter(follower_id=follower_id, following_id=following_id).exists() :
Following.objects.filter(follower_id=follower_id, following_id=following_id).delete()
return JsonResponse({'message':'follow delete'}, status=200)
Following(
following_id = following_id,
follower_id = follower_id
).save()
return JsonResponse({'message':'following success'}, status=200)
except KeyError :
return JsonResponse({'message':'KEY_ERROR'}, status=400)
팔로우, 팔로잉이 계속 헷갈려서 views.py에도 써놓고 했다
다만, 여기서 내가 나 자신을 팔로우할 수 없으므로
가져온 팔로우 변수와 팔로잉 변수가 똑같다면 나 자신을 할 수 없다고 문구뜨게 함
그리고 내가 이미 팔로우한 계정을 또 팔로우 누르면 팔로우취소
그런거 없다면 팔로우
Author And Source
이 문제에 관하여([Westagram] : 팔로우), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kyleee/Westagram-팔로우저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)