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

Django关联嵌套related_name问题:如何单循环遍历分类下所有商品规格?

解决Django中遍历分类下所有商品规格的单循环问题

错误原因

category.products 返回的是Product对象的RelatedManager(即该分类下所有商品的集合),并非单个Product实例,因此无法直接访问sizes属性,这就是触发AttributeError的原因。

单循环实现方案

直接通过Size模型的跨关系查询,一次性获取指定分类下所有商品的规格,实现单循环遍历:

def adjust_sizes(self, category: Category) -> None:
    # 跨关联查询:筛选属于目标分类下所有商品的规格
    sizes = Size.objects.filter(product__category=category)
    for size in sizes:
        # 执行你的业务逻辑
        pass

优化查询效率(可选)

如果需要在循环中访问size.product的属性,为避免N+1查询问题,可以添加select_related预关联查询:

sizes = Size.objects.filter(product__category=category).select_related('product')

这样在遍历过程中访问size.product不会额外触发数据库查询,提升性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:35:19