模型ProductFilter
具有products
ManyToManyField
。我需要从最高优先级的product.filters
(ProductFilter.priority
字段)获取属性to_export
我发现了这个
filters = ProductFilter.objects.filter(
products__in=[OuterRef('pk')]
).order_by('priority')
Product.objects.annotate(
filter_to_export=Subquery(filters.values('to_export')[:1])
)
但它提高了
ValueError:此查询集包含对外部查询的引用,只能在子查询中使用。
你知道为什么吗?
1条答案
按热度按时间oxiaedzo1#
这是老生常谈,但无论如何:
似乎相关查找无法处理此处的
OuterRef
:products__in=[OuterRef('pk')]
注意:在Django 3.2中,OP的例子产生了不同的错误,即
TypeError: Field 'id' expected a number but got ResolvedOuterRef(pk).
因为这里只有一个
pk
值,所以我认为您不需要使用__in
查找。下面的似乎工作,虽然我不确定这是否正是OP想要的:
生成的SQL(稍微简化的表名):