我有这个观点:
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)
我在这里有一点点所以这就是为什么它看起来过于凌乱。这是结果的图像。它给了我平均所有产生线索的房产的价格而不是一个学校(这是我想要的)。
答案 0 :(得分:1)
在Django中,您可以使用aggregate()
在整个查询集上生成聚合,或使用annotate()
为每个对象生成独立摘要。 Here is the documentation
在您的情况下,您似乎想要为每个大学对象注释平均lead__price
:
university = University.objects.all().annotate(Avg('lead__price'))
请注意,您可能需要调整lead__price
引用,使其与您尚未提供的数据模型匹配。