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

Django PolymorphicQuerySet无provisioning_set属性报错原因问询

报错原因

site.terminal_set 返回的是 PolymorphicQuerySet 类型的查询集合对象,代表和当前Site关联的所有Terminal实例的集合,而非单个Terminal模型实例。
反向关联属性 provisioning_set 是单个Terminal实例才拥有的属性,仅作用于单条数据对象,不属于查询集合的内置属性,因此直接在查询集合上调用该属性会触发属性不存在的报错。

正确查询写法

根据不同的使用场景,可以选择对应的写法:

  • 场景1:查询当前Site关联的所有Provisioning实例(推荐,单次查询效率最高)
# 直接跨外键正向过滤
provisioning_list = Provisioning.objects.filter(terminal__site=site)
# 取第一个实例的写法
first_provisioning = Provisioning.objects.filter(terminal__site=site).first()
  • 场景2:需要遍历当前Site下每个Terminal对应的所有Provisioning
# 先遍历查询集合拿到单个Terminal实例,再调用反向关联
for terminal in site.terminal_set.all():
    current_provisionings = terminal.provisioning_set.all()
    # 执行对应业务逻辑

内容的提问来源于stack exchange,提问作者Cido

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:54:04