Django 将SQL查询转换为精心制作的查询集

Django 将SQL查询转换为精心制作的查询集,django,django-queryset,Django,Django Queryset,我有一个原始的queryset,我想在queryset中翻译它。但我总是以错误告终 以下是原始查询: q = Table1.objects.raw( '''SELECT base_table1.id, base_table1.name, base_table1.n_id, count(base_table2.id) as 'count', max(base_table2.timestamp) as 'latest'

我有一个原始的queryset,我想在queryset中翻译它。但我总是以错误告终

以下是原始查询:

q = Table1.objects.raw(
     '''SELECT base_table1.id, base_table1.name, base_table1.n_id, count(base_table2.id) as 'count', max(base_table2.timestamp) as 'latest'
                                     FROM base_table1
                                     INNER JOIN base_table3 on base_table3.table1_id = base_table1.id
                                     INNER JOIN base_table2 on base_table2.table3_id = base_table3.id
                                     GROUP by base_table1.id'''
注意:这里我不需要base_table1.id,但它是rawQuerySet所必需的

以下是模型:

class Table1(models.Model):
n_id = models.PositiveIntegerField()
name = models.CharField(max_length=45)

class Table2(models.Model):
table3 = models.ForeignKey(
    Table3, null=True, blank=True, on_delete=models.SET_NULL
)
timestamp = models.DateTimeField(null=True)


class Table3(models.Model):
table1 = models.ForeignKey(
    Table1, null=True, related_name='t_entries', on_delete=models.SET_NULL
)

非常感谢您的回答。

您可以使用以下内容对
表1
模型进行注释:

from django.db.models import Max, Count

Table1.objects.annotate(
    count=Count('t_entries__table3'),
    latest=Max('t_entries__table3__timestamp')
)

由此查询集生成的
表1
对象将具有额外的属性
.count
.latest

您可以共享相关模型吗?我编辑了问题:)