Django,вычисление длительности между 2 полями с использованием временной метки

У меня есть эта модель таблицы.enter image description here

В этой таблице, в колонке stay, у меня есть поля stay и on move, мне нужно рассчитать все время, затраченное на дуарацию для последовательного пребывания и on_move .

моя функция для обновления значений полей колонок :

def mark_stay_location():
if TestLocation.objects.filter(processed=None):
    k = TestLocation.objects.filter(processed=None).order_by("timestamp")
    p = len(k)
    for i in range(p - 1):
        rowpairs = k[i : i + 2]
        lat1 = rowpairs[0].latitude
        lat2 = rowpairs[1].latitude
        long1 = rowpairs[0].longitude
        long2 = rowpairs[1].longitude
        lat = abs(lat2 - lat1)
        long = abs(long2 - long1)
        earth_radius = 6373.0
        a = sin(lat / 2) ** 2 + cos(lat1) * cos(lat2) * sin(long / 2) ** 2
        c = 2 * atan2(sqrt(a), sqrt(1 - a))
        distance = earth_radius * c * 1000
        for rowpair in rowpairs:
            row_id = rowpair.id
            po = TestLocation.objects.filter(id=row_id)
            if lat < 0.0009 or long < 0.0009:
                po.update(stay="stay")
                po.update(processed=True)
            else:
                po.update(stay="on_move")
                po.update(processed=True)
    return Response(status=status.HTTP_200_OK)
else:
    return Response(status=status.HTTP_404_NOT_FOUND)

Мой подход заключался в добавлении пустого списка перед циклом for диапазона i и добавлении в него временных меток на основе условия if, берем первый и последний элементы из списка и получаем разницу в минутах и сохраняем эту продолжительность в поле last stay перед полем on_move.Тот же процесс происходит и с вычислением дуарации времени в поле on_move.

Вернуться на верх