Django-最小值/最大值不显示在索引上

时间:2020-09-12 18:23:15

标签: html django min

我正在计算最小值和最大值,因此我可以显示汽车模型的RRP分布。在这里,我只有最小值,可以正确计算出最小值,但根据我从各种示例/站点获得的指导,它不会显示在索引文件中。 非常感谢您的帮助。

Models.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>  

1 个答案:

答案 0 :(得分:1)

在您的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,它把合计的结果作为值保存。

相关问题