python - 通过 urls.py 中的 PK 过滤 django rest 框架视图时,API 视图为空
问题描述
我正在尝试通过 url 中指定的 PK 值过滤我的 APIListView。代码运行但是我的 API 是空的,即使我知道它在我正在测试的 PK 中有数据。有任何想法吗?
模型.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
序列化程序.py
class ItemSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = ('pk', 'Description', 'Price')
视图.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
网址.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
[]
解决方案
URL参数可以在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
推荐阅读
- javascript - 创建一个返回唯一随机数并将该数字分配给单个变量的函数
- string - 如何在 Dart 中反转包含代理对的字符串?
- google-cloud-platform - 如何在谷歌云功能中验证经过身份验证的用户?
- sql-server - 如果我的 casenddate (column) = '3000-01-01' 然后使用 casestartdate(column) 的相同日期,我需要更新一列
- mysql - 如果记录不存在,则更新或插入它
- node.js - 任何适用于 Nodejs Express 源代码的混淆器
- oracle - 为什么不能为 0 command = Sell_price!=0; 评估错误?
- javascript - 在 AJAX 返回时处理 MVC 验证错误消息
- java - 使用 Java 8 的 lambda 表达式,转换 List
原始字节[],没有外部库 - php - PHP 的“扩展”本质是什么?PHP 的 `extends` 是如何实现的?