Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django/Postgres:从不同的集合中选择_Django_Postgresql_Django Models_Distinct_Django Orm - Fatal编程技术网

Django/Postgres:从不同的集合中选择

Django/Postgres:从不同的集合中选择,django,postgresql,django-models,distinct,django-orm,Django,Postgresql,Django Models,Distinct,Django Orm,我有这些模型: class Product(Model): ... class Scanning(Model): product = ForeignKey(..) datetime = DateTimeField(...) ... 我正在尝试对每个产品进行一次扫描,其中扫描是来自product.scanning.all()set的最新扫描 s1 = (product1,01.01.1000) s2 = (product2,01.01.1200) s3 = (p

我有这些模型:

class Product(Model):
    ...

class Scanning(Model):
    product = ForeignKey(..)
    datetime = DateTimeField(...)
    ...
我正在尝试对每个产品进行一次扫描,其中扫描是来自
product.scanning.all()
set的最新扫描

s1 = (product1,01.01.1000)
s2 = (product2,01.01.1200)
s3 = (product1,01.01.1900)
s4 = (product2,01.01.1988)
s5 = (product3,01.01.2015)
s6 = (product3,01.01.1970)
将返回

引发异常:

编程错误:表达式上的SELECT DISTINCT必须匹配初始值 按表达式排序第1行:在上选择“不同” (“产品应用程序扫描”,“产品id”)“专业。。。 ^


如何使其工作?

对于postgres,您不能对字段执行
区分
,除非您也按以下方式排序:

Scanning.objects.filter(product__user=u,product__active=True).distinct('product_id').order_by('product_id', 'datetime')
如果这还不够好,一种解决方案是进行如下双重查询:

q1 = Scanning.objects.filter(product__user=u,product__active=True).values('product_id').distinct().annotate(x=Max('id'))

q2 = Scanning.objects.filter(id__in=[i["x"] for i in q1])
q1 = Scanning.objects.filter(product__user=u,product__active=True).values('product_id').distinct().annotate(x=Max('id'))

q2 = Scanning.objects.filter(id__in=[i["x"] for i in q1])