#html #django #min
#HTML #django #минимум
Вопрос:
Я вычисляю минимальные и максимальные значения, чтобы я мог отобразить разброс 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:
В вашем 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 — это словарь, возвращаемый агрегатной функцией. Внутри этого словаря находится ключ RRP__min, который содержит в качестве значения результат вашего агрегата.