Django ORM查询带有不同表列的分组依据的内部联接

时间:2019-06-04 14:47:43

标签: mysql sql python-3.x django-models django-orm

我需要在Django ORM查询中转换以下SQL查询:

select * from formslist a, files b  
    where b.fileId=a.fileId_id and formsListId 
    in (select max(d.formsListId) 
    from files c, formslist d 
    where c.fileId=d.fileId_id
    group by c.formNumber, d.state, d.product
);

最初我尝试将其转换

select max(d.formsListId) 
    from files c, formslist d 
    where c.fileId=d.fileId_id
    group by c.formNumber, d.state, d.product

使用此ORM查询:

formsList.objects.select_related('fileId')
.annotate(Count('product'),Count('state'),Count('formNumber'))

错误:

Cannot resolve keyword 'formNumber' into field. As it is not the 
field of formsList.

加入

时,无法使用不同的表列进行分组依据

下面是我的模特:

class files(models.Model):
    fileId = models.AutoField(primary_key=True)
    formName = models.CharField(max_length=50)
    description = models.CharField(max_length=500)
    formFileName = models.CharField(max_length=150)
    formNumber = models.CharField(max_length=150)


class formsList(models.Model):
    formsListId = models.AutoField(primary_key=True)
    fileId = models.ForeignKey(files, on_delete=models.CASCADE)
    effectiveDate = models.DateField()
    dateOfCreation = models.DateField()
    state = models.CharField(max_length=50)
    product = models.CharField(max_length=50)
    formFilePath = models.CharField(max_length=100)
    type = models.CharField(max_length=50)
    formVersion = models.CharField(max_length=150)

我对此进行了搜索,但仅找到具有相同表列的分组方式

  • 有人可以帮我吗?我真的很感激。

0 个答案:

没有答案