Django - Min/Max 值未显示在索引上

Django - Min/Max values not displaying on Index

我正在计算最小值和最大值,以便显示某个车型的 RRP 分布。这里我只有最小值,它正在正确计算,但它不会使用我从各种 examples/sites 获得的指导显示到索引文件中。 非常感谢任何帮助。

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>  

在您的 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 的值是聚合函数返回的字典。在 that 字典中是键 RRP__min,它作为聚合结果的值。