Python 按产品类别划分的Django平均总价格

Python 按产品类别划分的Django平均总价格,python,django,Python,Django,我有这样的看法: def MainStatsView(request): leads = Leads.objects.all() university = University.objects.all() price = Leads.objects.aggregate(Avg('price')) context = { 'leads':leads, 'university':university,

我有这样的看法:

def MainStatsView(request):
    leads = Leads.objects.all()
    university = University.objects.all()
    price = Leads.objects.aggregate(Avg('price'))


    context = {
            'leads':leads,
            'university':university,
            'price':price,
            }

    return render(request,'stats/stats_main.html',context)
我试图得到每所大学(类别)产生潜在客户的房产(产品)的平均价格。我很难找到基于大学的平均价格。我试着使用for循环,但这似乎不起作用

这也是我的循环:

{% for uni in university %}
    <tr>
        <td>{{ uni.u_name }}</td>
        <td>{{ price }}</td>
        <td>{{ lead.school }}</td>
        <td>{{ lead.featured }}</td>
        <td>{{ lead.price }}</td>
    </tr>
{% endfor %}
大学模式:

class Leads(models.Model):
    listing = models.CharField(max_length=100,default='Listing')
    timestamp = models.DateTimeField(auto_now_add=True)
    company = models.CharField(max_length=50,default='Company')
    school = models.CharField(max_length=100,default='School')
    featured = models.BooleanField(default=False)
    price = models.IntegerField(blank=False,default=500)
    student_name = models.CharField(max_length=50,default='Name')
    student_phone = models.CharField(max_length=50,default='Phone')
    student_email = models.EmailField(max_length=100,default='none@studentcribz.com')
    party_size = models.IntegerField(max_length=1,default=1)

    def __str__(self):
        return self.school
class University(models.Model):
    u_date = models.DateTimeField(auto_now_add=True)
    u_name = models.CharField(max_length=100,blank=False)
    u_slug = models.CharField(max_length=100,blank=True)
    name_initials = models.CharField(max_length=5,blank=False)
    address = models.CharField(max_length=100,blank=False)
    color1 = models.CharField(max_length=7,blank=False)
    color2 = models.CharField(max_length=7,blank=False)
    color3 = models.CharField(max_length=7,blank=False)
    u_logo = models.ImageField(upload_to='university_logos',blank=False)
    banner = models.ImageField(upload_to='university_banners',blank=False)
    u_homepage_pic = models.ImageField(default='',upload_to='university_homepage_pic',blank=False)

    def __str__(self):
        return self.u_name

    def save(self, *args, **kwargs):
        self.u_slug = slugify(self.u_name)
        super(University, self).save(*args, **kwargs)
我在这里到处都是,所以看起来太乱了。这是结果的图像。它给了我所有产生潜在客户的房产的平均价格,而不是一所学校的价格(这是我想要的)


在Django中,您可以使用
aggregate()
在整个查询集上生成聚合,或者使用
annotate()
为每个对象生成独立的摘要

在您的案例中,似乎您希望为每个大学对象注释平均
lead\u price

university = University.objects.all().annotate(Avg('lead__price'))

注意:您可能需要调整
lead\u price
参考,使其与您尚未提供的数据模型相匹配。

抱歉,我更新了帖子以显示模型。我使用的数据来自两个模型,因此可能比一行更复杂。我可能错过了它,但是没有链接您的模型的
ForeignKey
s吗?你知道了,没有
ForeignKey
sIf你想用Django的方法做注释,然后,您需要提供一个
ForeignKey
,以便Django了解模型之间的关系。如果您不能采用这种方法,那么您需要自己实现逻辑。因此,为了确保我理解正确,我的
Leads模型
中的“School”字段应该是
大学模型
外键