python - 基于类的视图过滤 Django Rest 框架
问题描述
我有一个基于类的视图,向我显示所有餐厅的所有产品,但我想使用 request.user.restaurant 仅显示实际餐厅的产品,但这对我不起作用,它显示我所有餐厅和所有产品....
class MealListCreateAPIView(generics.ListCreateAPIView):
queryset = Meal.objects.all()
serializer_class = MealSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
def get_queryset(self):
request = self.request
qs = Meal.objects.all()
query = request.GET.get('q')
if query is not None:
qs = qs.filter(name__icontains=query, description__icontains=query)
return qs
def get_restaurant(self):
qs = Meal.objects.all()
query = request.GET.get('')
if query is not None:
qs = qs.filter(restaurant = self.request.restaurant.user).order_by("-id")
return qs
解决方案
您可以使用 APIView 而不是 ListCreatAPIView
class MealListAPIView(APIView):
serializer_class = MealSerializer
def get(self, request):
qs = Meal.objects.all()
query = request.GET.get('')
if query is not None:
qs = qs.filter(restaurant = self.request.restaurant.user).order_by("-id")
return self.serializer_class(data=qs, many=True)
推荐阅读
- php - 在 XAMPP 上使用 PHP 创建 XML 数据文件在 Mac 上不起作用(显示空白页)
- javascript - 使用CSS在背景网格上以垂直间隔渲染文本?
- python - 如何在tkinter中将框架向左对齐?
- android - 是否可以以root身份运行android应用程序
- python - pyparsing 在递归结构上失败
- python - 我在 pandas 中收到一个错误,因为我的数据框太大,我该如何克服这个错误?
- wordpress - Cpanel - 为外部域安装 SSL 证书
- javascript - 如何禁用打字稿以使我的 nextjs 构建失败?
- mysql - 如何正确使用 select 进行更新?
- python - 在 numpy 结构化数组中查找“行”的匹配子集