Мне нужно преобразовать приведенный ниже 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)
У меня есть поиск, но я нашел только группу с такими же столбцами таблицы .
- Может кто-нибудь помочь мне в этом. Я действительно ценю.