如何在Django中执行联接和聚合计数 [英] How to perform a join and aggregate count in Django

查看:82
本文介绍了如何在Django中执行联接和聚合计数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个模型:

class Unit (models.Model):
    Unit_name = models.CharField(max_length=30)
    Hull_number = models.CharField(max_length=30)
    Parent_unit = models.ForeignKey("self", blank=True, null=True)
    Class = models.ForeignKey(Class)
    email = models.CharField(max_length=50, default='')
    Member = models.ManyToManyField(Member, through='MemberUnit')

    def __str__(self):
        return self.Unit_name

class MemberUnit(models.Model):
    Member = models.ForeignKey(Member)
    Unit = models.ForeignKey(Unit)
    Position = models.ForeignKey(ClassPosition)

    def __str__(self):
        return self.Unit.Unit_name + " " + 
                self.Position.unit_position.Position_name + " ( " + 
                self.Member.first_name + " " + self.Member.last_name + " )"

我是Django的新手。查询是我所缺少的。
我需要的是Unit_name的总数。

I am new to Django (sort of). Querying is where I am lacking. What I need is a aggregate count of Unit_names.

为此,我需要在查询中提供一个Unit_Name及其数量作为查询的一部分。
在此方面的任何协助将不胜感激。

To that end, I require a query as part of my view to provide a Unit_Name and it's count. Any Assistance on this would be greatly appreciated.

谢谢

推荐答案

希望这会有所帮助:

from django.db.models import Count
MemberUnit.objects.values('Unit__Unit_name').annotate(c=Count('Unit'))

您可以在Django的shell:

You can try this in Django's shell:

manage.py shell

请参见文档

这篇关于如何在Django中执行联接和聚合计数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆