我在注释查询集时遇到麻烦。它具有多对多关系,在这种关系中,我只需要一个特定项目中的数据。
在字段上使用F对象时,我仅从此多对多字段中获取最后一个项目。我尝试过滤感兴趣的类型,但是得到了相同的结果。
In: anomalies.annotate(week=F('production_item__template__bacitem__bacs__printing_date')).values('week')
Out: [{'week': datetime.date(2019, 4, 23)}, {'week': datetime.date(2019, 4, 23)}, {'week': datetime.date(2019, 4, 23)}, {'week': datetime.date(2019, 4, 23)}]
In: anomalies.filter(production_item__template__bacitem__bacs__type__in=[BAC_TYPE.PRINTING, BAC_TYPE.LASER_CUTTING]).annotate(week=F('production_item__template__bacitem__bacs__printing_date')).values('week')
Out: [{'week': datetime.date(2019, 4, 23)}, {'week': datetime.date(2019, 4, 23)}, {'week': datetime.date(2019, 4, 23)}, {'week': datetime.date(2019, 4, 23)}]
我从printing_date
中获得了最后一个bacs
,而不是我过滤了'type'的那个。