Подскажите, пожалуйста:
Models.py
class Electricitymeter(models.Model):
name = models.CharField(max_length=100)
serialnumber = models.CharField(unique=True, max_length=30, primary_key=True, null=False, blank=False,)
ratio_transform = models.PositiveSmallIntegerField(null=False, blank=False, default=1)
class Lessor(models.Model):
name = models.CharField(unique=True, max_length=100)
class Rentaroom(models.Model):
room = models.OneToOneField(Room, on_delete=models.CASCADE)
renter = models.ForeignKey(Renter, verbose_name="Название арендатора", on_delete=models.CASCADE)
electricitymeter = models.OneToOneField(Electricitymeter, on_delete=models.CASCADE)
tarifofelectricity = models.FloatField(blank=False, null=False, default=11.8)
class Electricitydate(models.Model):
serialnumber = models.ForeignKey(Electricitymeter, blank=True, null=True, on_delete=models.CASCADE)
datedata = models.DateField(null=False, blank=False)
consumption = models.PositiveIntegerField(blank=False)
В форме на определенную дату нужно вытащить consumption (показание)
Views.py
def outputmetersdata(request):
form = MyForm()
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
form = form.cleaned_data
startdataperiod = form['startdataperiod']
enddataperiod = form['enddataperiod']
pk = form['lessor']
obj = Rentaroom.objects.all().filter(lessor_id=pk.id)
startdate = startdataperiod - timedelta(days=3)
enddate = startdataperiod + timedelta(days=3)
startconsumption = Electricitydate.objects.filter(datedata__range=[startdate, enddate])
context = {
'obj': obj,
'startdataperiod': startdataperiod,
'enddataperiod': enddataperiod,
'pk': pk,
}
return render(request, 'roomsmeters/outputmetersdata.htm', context)
else:
form = MyForm()
return render(request, 'roomsmeters/outputmetersdata.htm', {'form': form})
Template
{% for obj in obj %}
<h1> Показания за период с {{ startdataperiod }} - {{ enddataperiod }} </h1>
<tr>
<td>{{ obj.spotelectr }}</td>
<td>{{ obj.renter }}</td>
<td>{{ obj.room }}</td>
<td>{{ obj.electricitymeter }}</td>
<td>{{ obj.electricitymeter.ratio_transform }}</td>
<td>{{ obj.electricitymeter.serialnumber }}</td>
<td>{{ pk }}</td>
</tr>
Вопрос в следующем: Как в шаблоне на определенную дату (startdataperiod) вытащить показание счетчика? Т.е. получается через модель Rentaroom нужно попасть в Electricitymeter, а, оттуда в Electricitydate на определенную дату (желательно, чтобы даже если дата не совпадет, то было бы значение внесенное ранее и действовавшее до следующего внесения показаний)
И где лучше проводить вычисления? нужно разность на начало и на конец период показаний умножить на коэффициент и на тариф