我正在计算最小值和最大值,以便显示汽车模型的RRP分布。这里我只有最小值,它是正确计算的,但它不会使用我从各种示例/站点获得的指导显示在索引文件中。非常感谢任何帮助。
型号.py
class MotorMakes(models.Model):
MotorMakeName = models.CharField(max_length=50, unique=True, default=False)
def __str__(self):
return self.MotorMakeName or ''
def __unicode__(self):
return u'%s' % (self.MotorMakeName) or ''
class MotorModelsV2(models.Model):
MotorMakeName = models.CharField(max_length=50, default=False,)
MotorModelName = models.CharField(max_length=50, default=False,)
Mkid = models.ForeignKey(MotorMakes,on_delete=models.CASCADE, default=False)
Mlid = models.IntegerField(default=False, unique=True)
MotorImage = models.ImageField(upload_to='Car_Pics', default=False,blank=True)
def __str__(self):
return self.MotorModelName or ''
def __unicode__(self):
return u'%s' % (self.MotorModelName) or ''
class Meta:
ordering = ('MotorMakeName',)
class MotorDetail(models.Model):
MotorMakeName = models.CharField(max_length=50, default=False,)
MotorModelName = models.CharField(max_length=50, default=False,)
title = models.CharField(max_length=100, default=False,)
fuel = models.CharField(max_length=25, default=False,)
body = models.CharField(max_length=25, default=False,)
engine = models.CharField(max_length=5, default=False,)
#Mkid = models.CharField(max_length=5, default=False,)
#Mlid = models.CharField(max_length=5, default=False,)
Mkid = models.ForeignKey(MotorMakes,on_delete=models.CASCADE, default=False, null=True)
Mlid = models.ForeignKey(MotorModelsV2,on_delete=models.CASCADE, default=False, null=True)
RRP = models.DecimalField(max_digits=10, decimal_places=2, default ='0' )
MotorImage = models.ImageField(upload_to='Car_Pics', default=False,blank=True)
def __str__(self):
#return self.title or ''
return '%s %s %s' % (self.MotorMakeName,self.MotorModelName, self.title,) or ''
def __unicode__(self):
return u'%s' % (self.title) or ''
class Meta:
ordering = ('MotorMakeName',)
View.py
def SearchInventory(request):
if request.method=='GET':
inputvalue = request.GET['modelselection']
print(inputvalue)
DisplayInventory = GarageInventory.objects.all().filter(ListModel=inputvalue) #join to MotorDetails with Title and Body to get the image, as well as the RRP, then just output this to html
DisplayImage = MotorModelsV2.objects.all().filter(MotorModelName=inputvalue)
DisplayRRP=MotorDetail.objects.all().filter(MotorModelName=inputvalue).aggregate(Min('RRP'))
else:
DisplayInventory = GarageInventory.objects.all()
return render(request, 'search_results.html', {'GarageInventoryView':DisplayInventory,'ImageView':DisplayImage, 'RRPView': DisplayRRP })
Index.html
{% for inv in GarageInventoryView %}
<tbody class = "table table-hover">
<tr align="center">
<td align="center">{{inv.GarageID}}</td>
<td align="center">{{inv.ListModel}}</td>
<td align="center">{{inv.ListMake}}</td>
<td align="center">{{inv.Title}}</td>
<td align="center">{{inv.Year}}</td>
<td align="center">{{inv.BodyType}}</td>
<td align="center">{{inv.GaragePrice}}</td>
<td align="center">Base RRP is {{ RRP__min}}</td>
{% for imgs in ImageView %}
<td> <img src="{{ imgs.MotorImage.url }}" alt="{{inv.ListModel}} image",height="75", width="120" /></td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
在views.py中,您在上下文字典中将聚合结果的键定义为RRPView:
return render(request, 'search_results.html', {'GarageInventoryView':DisplayInventory,'ImageView':DisplayImage, 'RRPView': DisplayRRP })
但是,当您试图访问模板中的聚合值时,您试图访问聚合值的默认名称(RRP_min(,而不是存储在上下文中的密钥:
<td align="center">Base RRP is {{ RRP__min}}</td>
将该行更改为:
<td align="center">Base RRP is {{ RRPView.RRP__min }}</td>
上下文字典包含一个名为RRPView的关键字;RRPView的值是Aggregate函数返回的字典。在的字典中是键RRP_min,它将聚合的结果作为值保存。