【问题标题】:django orm sort by foreign key occurence in another tabledjango orm 按另一个表中出现的外键排序
【发布时间】:2021-09-12 21:24:23
【问题描述】:

假设有如下表格:

class Book(models.Model):
    title = models.CharField(max_length=200)

class Purchase(models.Model):
    book = models.CharField(Book, db_column="book", on_delete=models.CASCADE)
    date = models.DateField()

并且想要检索按购买次数排序的图书查询集(即在另一个表中出现的外键)。

Book.objects.all().annotate(number_of_purchases=Count(**something**)).order_by('number_of_purchases')

这可能吗?我目前不知道应该用什么替换“某物”。

【问题讨论】:

    标签: python django sqlite orm django-database


    【解决方案1】:

    您可以使用.annotate(…) [Django-doc]

    from django.db.models import Count
    
    Book.objects.annotate(
        npurchase=Count('purchase')
    ).order_by('-npurchase')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      相关资源
      最近更新 更多