我有两个字段的 QuerySet:
```Python
print(products_mtm)
<QuerySet
[
{'fk_products': 2653, 'fk_classes': 20},
{'fk_products': 2653, 'fk_classes': 23},
{'fk_products': 2653, 'fk_classes': 29},
{'fk_products': 2654, 'fk_classes': 20},
{'fk_products': 2654, 'fk_classes': 21},
{'fk_products': 2654, 'fk_classes': 24},
{'fk_products': 2655, 'fk_classes': 20},
{'fk_products': 2655, 'fk_classes': 25},
....]
print(products_mtm.values_list('fk_products').distinct())
print(products_mtm.values_list('fk_classes').distinct())
<QuerySet [(20,), (23,), (29,), (20,), (21,), (24,), (20,) (25,)...] #It does't DISTINCT it is full values_list of the 'fk_classes'
```
答案 0 :(得分:0)
是排序的问题。 products_mtm
上面有 order_by('fk_products')
。
docs.djangoproject.com/en/3.2/ref/models/querysets/#distinct – alv2017
我可以拒绝这个 order_by
- 并且所有 distinct()
都可以正常工作。但是,如果订购是必要的,那么对我来说就是一种简单的方式 - 只需使用 set(products_mtm.values_list('fk_classes'))
而不是 distinct()
。
(可能它不是 Django QuerySets 原生的,但它可以正常工作。)