python - 获取基于字段唯一的对象的查询集 - Django

标签 python django sqlite django-queryset

我有大量的车辆库存,并且有很多重复的车辆,仅通过库存编号来唯一。我正在尝试查询所有车辆的列表,但只想要每个型号的一辆车,忽略它的库存号字段。

V1.stock_no = 15393

V2.stock_no = 15394

V1.model_no = 98874

V2.model_no = 98874

因此,在 Django 中进行查询时,我只想要具有该型号的每个对象的一个​​实例。我读了这个堆栈溢出问题Select DISTINCT individual columns in django? ,但是

q = ProductOrder.objects.values('Category').distinct()

仅返回不同的型号列表,而不是对象实例,并且

Productorder.objects.all().distinct('category')

自 Django 1.4 起可用,仅适用于 PostgreSQL,不适用于 SQLite3。

有没有办法用 SQLite 来做到这一点,而不需要一些人为的 for 循环来完成它?

最佳答案

这是一种潜在的解决方案

q = ProductOrder.objects.filter(
    id__in=ProductOrder.objects.values('Category')
                               .distinct()
                               .values_list('id', flat=True))

编辑:或者,你可以尝试

q1 = ProductOrder.objects.values('Category')
                               .distinct()
                               .annotate(x=Max('id'))
q2 = ProductOrder.objects.filter(
    id__in=[i["x"] for i in q1])

我意识到这并不理想,但是由于必须循环。

关于python - 获取基于字段唯一的对象的查询集 - Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43550299/

相关文章:

python - Python 中的递归关系

python - Django /Jinja2 : How to use the index value in a for-loop statement to display two lists?

python - 推荐使用 django 的扭曲网络

SQLite在where子句中的前一个选择值

android - 在android中用当前日期时间更新sqlite列

c - sqlite:转到结果集中的上一条记录?

python - 如何使用 python pandas 在循环中加入多个数据帧

Python:从标题等于键的字典中重复写入csv文件

python - Pymacs 无法在 Anaconda 上找到包

python - 安装Mysql时启动DJango服务器出错