Django의 관심 시스템

1975 단어
Bootcamp2는 제가 Django를 배워서 만든 바퀴입니다. 이 글은 그중의 관심 시스템을 쓰겠습니다.
데이터베이스에서 인용된 다대다 관계에 주목한다. Django에서 다대다는 ManyToManyField를 사용할 수 있지만 다대다 관계는 관심 시간과 같은 추가 정보를 전달할 수 없다.따라서 두 User를 연결하는 연관 테이블을 만들고 테이블에 추가 정보를 추가할 수 있습니다.
class Follow(models.Model):
    follower = models.ForeignKey(User, related_name='follower', on_delete=models.CASCADE) 
    #on_delete Django2    
    followed = models.ForeignKey(User, related_name='followed', on_delete=models.CASCADE)
    date = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ('-date',)

    def __str__(self):
        return f'{self.follower} follow {self.followed}'

이렇게 하면 주목 모델이 완성되고 아래에 몇 가지 정적 방법을 추가한다.
    @staticmethod 
    def follow(from_user, to_user):
        Follow(follower=from_user,
               followed=to_user).save() #    

    @staticmethod
    def unfollow(from_user, to_user):
        f = Follow.objects.filter(follower=from_user, followed=to_user).all()
        if f:
            f.delete() #  

    @staticmethod
    def user_followed(from_user):
        followeders = Follow.objects.filter(follower=from_user).all()
        user_followed = []
        for followeder in followeders:
            user_followed.append(followeder.followed)
        return user_followed #  from_user    ,    

views에서.py에서 호출, 예를 들어 첫 페이지에서 현재 사용자가 주목하는 사람의 동태를 얻는다. 이것은 연결 검색, Django의 연결 검색과 관련된다. 나는 실현하기 어렵다. 다행히질의
def followed(request):
    user = request.user
    all_feeds = Feed.get_feeds().filter(user__in=Follow.user_followed(user))
    #user__in            
    paginator = Paginator(all_feeds, FEEDS_NUM_PATES)
    feeds = paginator.page(1)
    from_feed = -1
    if feeds:
        from_feed = feeds[0].id
    return render(request, 'feeds/followed_feeds.html', {
        'feeds': feeds,
        'from_feed': from_feed,
        'page': 1,
    })

좋은 웹페이지 즐겨찾기