我已经开始使用GenericAPIView而不是APIView,我对使用在类顶部定义的queryset和serializer_class感到困惑。 我知道必须定义这些,但我现在在我的类的顶部和GET内的另一个查询中有一个查询。我的问题是我可以在我的GET方法中使用查询集,所以我没有做出2个不必要的查询。
class demo(GenericAPIView):
queryset = Demo.objects.all()
serializer_class = DemoSerializer
def get(self, request, num, format=None):
query = Demo.objects.filter(name=test, number=num)
换句话说,queryset = Demo.objects.all()是定义的,因为它是必需的 - 但我并没有真正使用它,所以看起来像是一个额外的查询......
答案 0 :(得分:1)
get_queryset
方法的情况下才需要 queryset
。在您的情况下,而不是在get
中定义其他查询集,只需实现get_queryset
。如果您使用的是url的kwargs,则可以使用self.kwargs
属性在此方法中获取它:
class demo(GenericAPIView):
serializer_class = DemoSerializer
def get_queryset(self):
return Demo.objects.filter(name=test, number=self.kwargs['num'])