ゆーじぇいブログ

ゆーじぇいブログ

プログラミングとか色々

[Django]フォローしているユーザーの投稿のみをタイムラインに流す

f:id:jyouj:20181124164719j:plain

タイムラインやホームを作っている時、フォローしているユーザーの投稿のみを流したい時ってありますよね?Djangoで簡単にそれを実装する方法を紹介します。

フォローしているユーザーの投稿のみを!

フォロー・アンフォロー機能に関してはこちらを参照ください。
jyouj.hatenablog.com

さてさて、投稿モデルは作っていると仮定します。タイムラインを実装していきましょう。

from django.views import generic
from django.contrib.auth.mixins import LoginRequiredMixin

class TimeLineListView(LoginRequiredMixin, generic.ListView):
    template_name = 'posts/timeline.html'
    context_object_name = 'posts'

    def get_queryset(self):
        """自分の投稿と、フォローしているユーザーの投稿のみを返す"""
        users = self.request.user.get_followings()

        return Post.objects.filter(Q(user__in=users) | Q(user=self.request.user))

これによって、フォローしているユーザーと自分の投稿のみを流すことができました。

何かあれば、じぇい👨‍💻 (@jyouj__) | Twitterに!