我想按ID过滤URL中的查询参数。
例如:http://.../game/?category = 1&level = 1。这是我的一些代码:
models.py
class Game(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(Categories, on_delete=models.CASCADE)
level = models.ManyToManyField(Level)
views.py
class GamesListView(generics.ListAPIView):
serializer_class = GamesListSerializer
def get_queryset(self):
queryset = Games.objects.all()
category = self.request.query_params.get('category')
level = self.request.query_params.get('level')
if category:
queryset = queryset.filter(category_id=category)
如何过滤与游戏中多对多关系相关的关卡?
答案 0 :(得分:0)
您可以使用level=id_of_level
进行过滤,也可以使用level__id=id_of_level
。因此,您可以通过以下方式实现此目标:
class GamesListView(generics.ListAPIView):
serializer_class = GamesListSerializer
def get_queryset(self):
queryset = Games.objects.all()
category = self.request.query_params.get('category')
level = self.request.query_params.get('level')
if category:
queryset = queryset.filter(category_id=category)
if level:
queryset = queryset.filter(level=level)
return queryset