我正在尝试使用多对多关系来解决获取对象的问题。问题如下:
我有一系列选定的过滤器,就是说, [red,rounded] 。然后我有一个产品模型包含很多过滤器的值,如:红色,蓝色,圆角,空白,大,小
我的目标是获得红色和四舍五入
的产品当我使用__in=[array]
时,显然会导致那些红色的产品被四舍五入。
对我来说唯一可行的解决方案是使用:
products.objects.filter(fil=red).filter(fil=rounded).all()
但我想知道是否有任何方法不使用大量filter()
,因为所需的金额是不可预测的(例如,用户可以选择[红色,蓝色,白色,圆形]。
答案 0 :(得分:0)
您可以使用Q objects构建自定义查询。
# Build the query for selected terms
custom_query = None
for term in selected_terms:
query_for_term = Q(fil=term)
# Keep and'ing(&) terms
custom_query = custom_query & query_for_term if custom_query else query_for_term
# Then filter using the query
products.objects.filter(custom_query)