팀원들과 간단한 follower 예제를 만들어보며 여러가지로 many-to-many field를 활용해보았다.
class User(AbstractUser):
class Meta:
db_table = "user_table"
follower = models.ManyToManyField('User', related_name='followee')
cur_user = request.user
clicked_user = User.objects.get(id=user_id)
if cur_user.follower.filter(id = clicked_user.id).exists():
cur_user.follower.remove(clicked_user)
else:
cur_user.follower.add(clicked_user)
return redirect('/follower')
위와 같은 방법으로 오브젝트에서 직접적으로 follower 필드를 가져와 filter를 거는 방법.
me = request.user
click_user = User.objects.get(email=email)
if me in click_user.followee.all():
click_user.followee.remove(request.user)
else:
click_user.followee.add(request.user)
클릭된 유저의 followee(related_name)값을 all()메소드를 통해서 queryset으로 가져와 현재 세션에 저장된 유저가 있는지 검사하는 방법
위의 방법들을 통해서 내 팔로우 테이블에 등록이 되어있는지 검사할 수 있었다.
users = User.objects.all().exclude(id = cur_user.id).exclude(id__in = followers)
return render(request, 'follow_page.html', {'users':users, 'followers': followers})
또한 __in을 활용하여 iteration안에 있는 오브젝트들을 검사하여 제외하거나 조회할 수 있다는 것도 오늘 배웠다. 팀원들과의 원활한 작업을 위해 작은 조각코드들을 계속해서 시도할 생각이다.