You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django REST Framework传主键pk触发selected函数意外参数错误咨询

问题原因&解决步骤

  1. URL路由与视图参数匹配问题
    DRF完全支持传递主键参数,你当前的参数报错首先来自路径参数传递的匹配异常,先做如下检查:
  • 确认你修改完视图代码后已经重启了Django开发服务,旧代码缓存会导致参数定义不生效
  • 路由配置建议补充末尾斜杠,符合Django默认路由规则:
# 应用内urls.py修改
path('selecteddevice/<int:pk>/', views.selected),
  1. ORM查询语法错误
    all() 方法是Django ORM中用于查询全量数据的方法,不接受任何过滤参数,你按主键过滤的写法需要替换为filter()方法:
# views.py中查询部分修改
# 错误写法
# devices = Device.objects.all(pk=pk)
# devicedetail = DeviceDetail.objects.all(DD2DKEY=pk)
# 正确写法
devices = Device.objects.filter(pk=pk)
devicedetail = DeviceDetail.objects.filter(DD2DKEY_id=pk) # 外键直接查主键值加_id后缀效率更高
  1. 模型方法错误
    你的DeviceDetail模型中__str__方法引用了不存在的hostname字段,该字段属于关联的Device模型,需要修改为:
# models.py中DeviceDetail的__str__修改
def __str__(self):
    return self.DD2DKEY.hostname
  1. 返回结果优化(可选)
    你当前直接拼接两个不同结构的序列化结果,前端解析成本较高,建议包装为字典返回:
# views.py返回部分修改
results = {
    "device_base_info": devserializer.data,
    "device_detail_info": devdserializer.data
}
return Response(results)

内容的提问来源于stack exchange,提问作者L.Calvin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:27:03