Django QuerySet:distinct()适用于一个领域,但不适用于另一个领域
Djnago QuerySet: distinct() work for one field, but don't work for enother
我有两个字段的查询集:
```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'
```
是排序的问题。 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 的本机,但它工作正常。)
我有两个字段的查询集:
```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'
```
是排序的问题。 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 的本机,但它工作正常。)