gpt4 book ai didi

python-3.x - 如何从 django-filter 的 generic.ListAPIView 类中获取请求对象?

转载 作者:行者123 更新时间:2023-12-01 21:56:05 25 4
gpt4 key购买 nike

我有一个使用 djangorestframework 运行的 django-filter 查询。下面的 View 函数用于 url。但是当我一开始就得到对象时,我不仅想通过搜索查询具有的参数(用户名和用户标识)来过滤它们。但我也想根据登录者进行过滤,我可以通过来自 URL 的请求对象获得。

函数 getUsername() 独立工作,但不与其他代码一起工作。

因此有一种方法可以在下面的代码中访问 self 请求。非常感谢任何帮助。

class userSearch(generics.ListAPIView):

def getUsername(self):
return self.kwargs['username']

serializer_class = UserSerializer
queryset = UserProfile.objects.filter(professor=User.objects.get(username=self.getUsername()).id).order_by('username')
filter_backends = (DjangoFilterBackend,SearchFilter)
filter_fields = (username,userid,userType)
search_fields = ('username', 'first_name')

最佳答案

您可以覆盖 get_queryset(self),而不是直接定义 queryset 属性方法:

class userSearch(generics.ListAPIView):
serializer_class = UserSerializer
filter_backends = (DjangoFilterBackend, SearchFilter)
filter_fields = ('username', 'userid')
search_fields = ('username', 'first_name')

def get_queryset(self):
username = self.kwargs['username']
professor = User.objects.get(username=username)

# Here you can do the following thing:
current_user = self.request.user

# And use it as you wish in the filtering below:

return UserProfile.objects.filter(professor=professor).order_by('username')

关于python-3.x - 如何从 django-filter 的 generic.ListAPIView 类中获取请求对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56958914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com