Django many-to-many field 스터디

코변·2022년 6월 16일
0

개발일지

목록 보기
32/41
post-custom-banner

팀원들과 간단한 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안에 있는 오브젝트들을 검사하여 제외하거나 조회할 수 있다는 것도 오늘 배웠다. 팀원들과의 원활한 작업을 위해 작은 조각코드들을 계속해서 시도할 생각이다.

profile
내 것인 줄 알았으나 받은 모든 것이 선물이었다.
post-custom-banner

0개의 댓글