sql - 在 Django 模型上执行 INNER JOIN、GROUP BY 和 COUNT

标签 sql database django models inner-join

我在理解如何使用 Django 模型进行复杂查询(甚至简单查询)时遇到问题。我希望使用 Django 模型在一个语句中进行内部连接、分组和计数。

例子:

Select ab.userid, count(ab.userid) as bids, u.username 
from auctionbids ab 
inner join users u on ab.userid=u.id 
group by ab.userid 
order by numbids desc;

这种类型的查询非常常见且直接,所以我不得不想象它可以用 django 模型完成,但它在文档中并不明显。

编辑:添加模型

class Users(models.Model):
    id = models.IntegerField(primary_key=True)
    username = models.CharField(max_length=150)

class Auctionbids(models.Model):
    id = models.IntegerField(primary_key=True)
    user = models.ForeignKey(Users)

最佳答案

如果您发布您的 models.py 文件,我可能会给您更准确的答案,但我认为您想要的是 Django Aggregration API

你会像这样使用它:

from django.db.models import Count
User.objects.all().annotate(bids=Count('auctionbids')).order_by('bids')

关于sql - 在 Django 模型上执行 INNER JOIN、GROUP BY 和 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11006550/

相关文章:

sql - 查询嵌套表

Django REST EmailAddress 匹配查询不存在

mysql - 如何从两个表中编写选择查询

sql - 如何通过过滤器有效地获得最小值和最大值?

mysql - 将本体连接到预先存在的数据库

database - 默认数据库 ID;系统和用户值

php - MYSQL查询空字段的语句

jquery - CORS Django 'Access-Control-Allow-Origin'

python - 更改 Django 模型表单中外键的默认占位符

sql - 对带有多个点的 varchar 列进行排序。点赞数