如何通过用户关系表中的外键获取 User 的实例?
不好意思,我这应该算是提了一个 xy问题
我的需求是想通过 rest framework
的 @detail_route
修饰符实现类似 /users/{user_id}/fans/
这种风格的路由,但是在写方法的时候不知道除了循环提取还有什么办法获取 user
列表,后来这样写了,可以用,但是不知道是不是真的好
class UserViewSet(viewsets.ModelViewSet):
"""
This viewset automatically provides `list` and `detail` actions.
"""
queryset = MyUser.objects.all()
serializer_class = UserSerializer
filter_class = UserFilter
@detail_route(methods=['get'], url_path='fans')
def get_fans(self, request, pk=None):
instance = self.get_object()
from_user_list = []
follows = instance.fans.filter(followed=True)
# 这里通过调用 rest framework 的分页方法进行分页操作
# 然后提取出指定数量的实例再进行提取
page = self.paginate_queryset(follows)
for f in page:
from_user_list.append(f.from_user)
serializer = self.get_serializer(from_user_list, many=True)
return self.paginator.get_paginated_response(serializer.data)
下面的问题提问的并不好
用户关系表为
class Follow(models.Model):
from_user = models.ForeignKey('User', related_name='followers')
to_user = models.ForeignKey('User', related_name='fans')
此时有一个 User 实例,我想通过 fans 获取它的所有粉丝
u = User.objects.get(id=1)
u.fans.all()
此时获取到了一个 Follow 列表 [< Follow: >, < Follow: >]
请问如何才能获取到 User 列表?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
https://docs.djangoproject.com/en/1.8/ref/models/fields/#django.db.mod...