4

「いいね」機能を持つソーシャルアプリを構築しています.django-redisを使用して、次のようにすべての投稿から「いいね」番号を保存しています:

from django_redis import get_redis_connection
con = get_redis_connection("default")
con.incr("post" + ":" + id)

ドキュメントからRaw client access

それはうまく機能し、django-rest-framework を使用して API を提供し、ListCreateAPIViewを使用してすべての投稿を一覧表示します。通常、データベースに必要なフィールドが表示されます。ここでの問題は、この API で django-redis からの「いいね」数を表示したいということです。これは、json の戻り値が私のデータベースと django-redis からのものであることを意味します。

私はdjango-rest-frameworkに関するソースコードを見回しました

class ListCreateAPIView(mixins.ListModelMixin,mixins.CreateModelMixin,
                    GenericAPIView):
    """
    Concrete view for listing a queryset or creating a model instance.
    """
    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)

そしてリストメソッド:

class ListModelMixin(object):
    """
    List a queryset.
    """
    def list(self, request, *args, **kwargs):
        queryset = self.filter_queryset(self.get_queryset())

        page = self.paginate_queryset(queryset)
        if page is not None:
            serializer = self.get_serializer(page, many=True)
            return self.get_paginated_response(serializer.data)

        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)

データベースクエリセット(Mysqlを使用)からしかデータを取得できないようです。django-rest-framework を使用して django-redis からデータを返す方法はありますか?

解決済み: @Rahul Gupta からの回答に感謝します。

def get_likes(self, obj):
    post_id = obj.id
    post_like = get_redis_connection("default")
    likes = post_like.get("post"+":"+str(post_id))
    if likes == None:
        return 0
    else:
        likes = likes.decode('utf-8')
        return likes
4

2 に答える 2