Запрос Django ORM для внутреннего объединения с группой By с различными столбцами таблиц - PullRequest
0 голосов
/ 04 июня 2019

Мне нужно преобразовать приведенный ниже SQL-запрос в запрос Django ORM:

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.

Я не могу сделать Группу By с разными столбцами таблицы при присоединении

Ниже приведены мои модели:

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)

У меня есть поиск, но я нашел только группу с такими же столбцами таблицы .

  • Может кто-нибудь помочь мне в этом. Я действительно ценю.
...