「いいね」機能を持つソーシャルアプリを構築しています.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