【问题标题】:API view is empty when Filtering django rest framework view by PK in urls.py通过 urls.py 中的 PK 过滤 django rest 框架视图时,API 视图为空
【发布时间】:2020-03-18 17:24:20
【问题描述】:

我正在尝试通过 url 中指定的 PK 值过滤我的 APIListView。代码运行但是我的 API 是空的,即使我知道它在我正在测试的 PK 中有数据。有什么想法吗?

Models.py

class Item(models.Model):
    Description = models.CharField(max_length=20)
    Price = models.DecimalField(max_digits=5, decimal_places=2)

    def __str__(self):
        return self.Description

Serializers.py

class ItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = Item
        fields = ('pk', 'Description', 'Price')

Views.py (API)

class SingleItemAPIView(generics.ListAPIView):
    serializer_class = ItemSerializer
    def get_queryset(self):
        item = self.request.query_params.get('pk', None)
        queryset = Item.objects.filter(pk=item)
        return queryset

Urls.py

urlpatterns = [
    path('<int:pk>/',SingleItemAPIView.as_view(), name='single_object_view')
]

DRF 输出

GET /api/1/
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[]

【问题讨论】:

    标签: python django api django-rest-framework django-views


    【解决方案1】:

    网址参数见self.kwargs

    class SingleItemAPIView(generics.ListAPIView):
        serializer_class = ItemSerializer
    
        def get_queryset(self):
            item = self.kwargs['pk']
            queryset = Item.objects.filter(pk=item)
            return queryset

    【讨论】:

      猜你喜欢
      • 2018-11-19
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 2014-02-07
      • 1970-01-01
      相关资源
      最近更新 更多