How to calculate doeking km using property in model

I am stuck in problem ,here i want to calculate doeking km

where: doeking km mean,suppose 1 day a vehicle travel 10km and 2nd day travel 20km and 3rd day travel 50km in first day it will so only 10 and second day it will sum 1st day(10)+2nd day(20) = 30km and for 3rd travel 1 day+2day+3day = 80km.

here it my model ..

class Log(models.Model):
vehicle = models.ForeignKey(Vehicle, on_delete=models.CASCADE)
date_time = models.DateTimeField(
    default=timezone.now, blank=True, null=True)


@property
def doeking_km(self):
    res = Logsheet.objects.filter(log=self,log__date_time__range=[self.date_time, self.date_time + datetime.timedelta(days = 1)]).aggregate(Sum("daily_km")).get("daily_km__sum")

    return res

def __str__(self):
    return self.vehicle.vehicle_no + " " + str(self.date_time)

and ..

class Logsheet(models.Model):
log = models.ForeignKey(
    Log, on_delete=models.CASCADE, related_name="logsheets")
driver = models.ForeignKey(
    Driver, on_delete=models.CASCADE, blank=True, null=True)
trip = models.IntegerField(blank=False, null=False)
distance_from = models.FloatField(blank=True, null=True, )
distance_to = models.FloatField(blank=True, null=True, )
time_from = models.TimeField(blank=False, null=False, default=timezone.now)
time_to = models.TimeField(blank=False, null=False, default=timezone.now)
source = models.CharField(max_length=100, blank=True, null=True)
destination = models.CharField(max_length=100, blank=True, null=True)
daily_km = models.FloatField(blank=True, null=True, )

Than you !

Back to Top