【问题标题】:Best implementation follow and unfollow in django rest frameworkdjango rest 框架中的最佳实现跟随和取消关注
【发布时间】:2020-03-14 23:42:18
【问题描述】:

尝试在 Django-rest 中实现追随者和追随者以及功能,如果我不使用休息框架来创建它,我知道如何做到这一点。但这次我几乎不知道如何做到这一点。

请:

1) 假设我正在从事一个大项目,那么做这种事情的最佳方法是什么?

2) 在序列化器和视图部分我很迷茫,我只知道在序列化器部分我只选择了以下模型

假设我有这样的个人资料模型

class Profile(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    following = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='followers', blank=True)
    other content…….

感谢您的帮助

【问题讨论】:

  • 我知道,这已经回答了。但是看看这个关注者/关注方法的解决方案 (stackoverflow.com/questions/58794639/…) .. 因为在这种情况下,取消关注将是一个简单的删除表的简单删除请求。

标签: python django django-rest-framework


【解决方案1】:

将此添加到您的 urlpatterns

path('follow/<int:pk>/', FollowView.as_view({'post': 'follow'})),
path('unfollow/<int:pk>/', FollowView.as_view({'post': 'unfollow'})),

在你的休息视图中

class FollowView(viewsets.ViewSet):
    queryset = Profile.objects

    def follow(self, request, pk):
        # your follow code
        return Response({'message': 'now you are following'}, status=status.HTTP_200_OK)

    def unfollow(self, request, pk):
        # your unfollow code
        return Response({'message': 'you are no longer following him'}, status=status.HTTP_200_OK)

要将项目添加到 ManyToManyField,您必须使用 add 函数。在这种情况下,它将是 Profile 的一个实例。

profile.following.add(follow_profile)  # To add a following
profile.following.remove(follow_profile)  # To remove a following

也就是说你的函数看起来像这样。

def follow(self, request, pk):
    own_profile = request.user.profile_set.first()  # or your queryset to get
    following_profile = Profile.objects.get(id=pk)
    own_profile.following.add(following_profile)  # and .remove() for unfollow
    return Response({'message': 'now you are following'}, status=status.HTTP_200_OK)

【讨论】:

    猜你喜欢
    • 2021-10-15
    • 1970-01-01
    • 2020-04-15
    • 2015-06-06
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    相关资源
    最近更新 更多