为了简单起见,假设我在Django(Django rest framework)应用程序中有以下模型。在
User (id, name)
BlogPost (id, user, content, image)
BlogPostLikes(id, user, blogpost, timestamp)
// Assuming an inverse-relation to BlogPost via a variable called "likes"
我正在寻找一种“最佳实践”方式:
效率高!在
我的直觉让我想这样实现它(使用基于类的通用视图)
^{pr2}$但后来我被卡住了。我不知道如何修改我的BlogPostLikesSerializer
以指示当前用户(request.user
来自views.py
)是否包含在博客文章的likes集中。你们知道我该怎么做吗?在
谢谢
我可以想出两种方法来达到这个目的。在
如果您只需要一个
boolean
True
/False
是否喜欢Post
,那么可以使用.extra
。在1.1条。将您的
BlogPost
Queryset
改为如下所示:1.2条。在
^{pr2}$BlogPostList
视图中更改get_queryset
方法1.3条。将新字段添加到
BlogPostSerializer
获取整个
BlogPostLike
对象。在2.1.更改
get_queryset
方法。在2.2条。改变
serializer
。但这可以通过两种方式实现:2.2.1条。序列化包含一项的列表:
并从^{中删除
blogpost = BlogPostSerializer()
。我认为这会导致无限循环。在2.2.2序列化单个对象:
但是通过这种方式,您必须在
BlogPost
对象中添加一个新方法来返回这个Like
对象可以使用SerializerMethodField动态获取标志,如下所示:
但是,您需要在实例化序列化程序时传递请求,方法是执行以下操作:
serializer = BlogPostSerializer(context={'request': request})
相关问题 更多 >
编程相关推荐