如何在Django查询中按多对多字段排序

时间:2018-10-17 18:26:40

标签: django django-orm

我有以下型号:

class CompanyGroup(models.Model):  
name = models.CharField(max_length=64, unique=True)   

class Company(models.Model):
    name = models.CharField(max_length=255, db_index=True) 
    groups = models.ManyToManyField(CompanyGroup, related_name='groups', blank=True)

我想显示添加到群组中的最新公司。我这样做的方法如下:

companies = Company.objects.filter(
        groups__name=group_name
        ).order_by('-groups__id')

当我打印sql时,它是按company_group_id而不是companies_company_groups的ID排序的:

ORDER BY `companies_company_groups`.`companygroup_id` ASC

我希望其订购依据:

ORDER BY `companies_company_groups`.`id` ASC

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以像这样访问直通模型。

Company.groups.through.objects.all().order_by('-id')

这将查询由多对多关系生成的表。希望对您有所帮助。