.only()。prefetch_related()赋予'ManyToOneRel'对象没有属性'attname'

时间:2019-08-07 10:26:47

标签: python django

我正在使用.only()在同一查询上在select_related()和prefetch_related()之后获取表的必填字段

我似乎无法从prefetch_related中获得结果,可能是因为.only()限制了对其结果的访问?

我也尝试在.only()中添加prefetch_related字段,但无济于事。

Feedback.objects.all().select_related(
            'feedback_option'
        ).only(
            'feedback_option',

            # tried with and without either one or both of the following
            'feedback__remarks',
            'feedback__remarks__text'
        ).prefetch_related(
            Prefetch(
                'feedback__remarks',
                queryset=FeedbackRemark.objects.all().only('text'),
            ),
        )

正因为如此,我遇到了以下异常情况。

AttributeError:'ManyToOneRel'对象没有属性'attname'

我正在使用django 1.10.5

1 个答案:

答案 0 :(得分:0)

遇到同样的问题,通过将 .only() 替换为 .defer() 来解决它,列出所有未使用的字段。 这缩短了使用的内存,无需额外的数据库查询。