2013-02-25 1 views
0

이것은 초보자가 될 수도 있지만 내 수준을 넘어서는 그 증명입니다. 그리고 미리 감사드립니다.계산을 수행해야하는 데이터 행을 표시하는 방법에 대한 조언

달성하고자하는 것은 내가 쿼리하는 데이터의 행이며, 비활성 인 Liveroute 테이블의 필드 값을 기준으로 쿼리 한 후 두 경도 집합 사이의 거리를 계산하는 계산을 수행합니다 위도 값을 사용하여 두 점의 위도와 위도 사이의 거리를 계산하기 위해 호버린 수식을 사용할 수 있습니다. 그러나이 계산 과정에 시간이 걸릴 수 있으므로 테이블의 더 많은 행에 대해 시간에 맞춰 데이터를 표시 할 수 없게됩니다. 그래서 나는 계산 결과를 다른 테이블에 저장하고 해당 테이블에서 데이터를 가져 와서 표시한다고 생각했습니다.

테이블의 값이 비활성이 될 때 계산을 수행합니다. Liveroute 모델 클래스에있는 행에 대해 행이 활성 또는 비활성인지 여부를 알려주는 Django 코드가 있습니다. 이 isActive 기능에서이 값을 바탕으로

class LiveRoutes(models.Model): 
    user = models.ForeignKey(User) 
    route = models.ForeignKey(UserRoutes) 
    status = models.ForeignKey(LiveRoutesStatus) 
    traveller = models.ManyToManyField(LiveRouteTravellers) 
    datetime = models.DateTimeField() 

def __unicode__(self): 
    return self.route.__unicode__() 

def isActive(self): 
    utc = pytz.utc 
    os.environ['TZ'] = 'UTC' 
    local = pytz.timezone("Asia/Calcutta") 
    now = utc.localize(datetime.datetime.today()) 
    now = now.astimezone(local) 
    time_delta = (local.localize(self.datetime.replace(tzinfo=None)) + datetime.timedelta(minutes=self.route.journey_time_day)) - now 
    if time_delta.days == -1 and (24 - (time_delta.seconds/3600)) <= 2: 
    return True 
    elif time_delta.days >= 0: 
    return True 
    else: 
    return False 

나는 내 문제는 나중에 것을 내가 가져올 수 있도록, 다른 테이블에 다시 모든 데이터를 삽입하는 방법입니다

def carbonFootPrint(request): 
if request.method != "GET": 
    raise Http404 

routes = LiveRoutes.objects.all(); 
routeDetailArr = [] 
for lroute in routes: 
    routeDetail = dict() 
    if lroute.isActive() == False: 

     #Now I need to find out the start location and end location for the journey and the number of travellers. 
     routeDetail['travellers'] = lroute.traveller.all().count() 
     routeDetail['start_loc_lat']= lroute.route.start_location.latitude 
     routeDetail['start_loc_long'] = lroute.route.start_location.longitude 
     routeDetail ['end_loc_lat'] = lroute.route.end_location.latitude 
     routeDetail['end_loc_long'] = lroute.route.end_location.longitude 
     routeDetail['distance'] = haversine(start_loc_lat,start_loc_long,end_loc_lat,end_loc_long) 
     routeDetailArr.append(routeDetail) 

다음과 같이 계산을 수행하고 싶어 그 값들. 모든 조언을 주시면 감사하겠습니다.

+1

사용 request.session – catherine

+0

나에게 몇 가지를 제공하십시오 링크는 그 세션 일이 정교합니다. –

+1

링크가 없지만 샘플 데이터를 제공 할 수 있습니다. – catherine

답변

1

세션을 트리거하기 위해, 그것은 다음과 같이해야합니다 :

request.session['travellers'] = lroute.traveller.all().count() 
//other session here 

얻을 데이터를 사용하려면, 그것은해야합니다 :

travellers = request.session.get('travellers') 
+0

세션에서 데이터를 저장합니다. 세션 전체에서 우리는 그 데이터를 사용할 수있게 될 것입니다. 그래서 내가 세션을 사용할 것을 제안하는 이유는 무엇입니까? 나는 웹 개발에 익숙하지 않아서 설명을 찾고 있습니다. –

+1

예 ............. – catherine

+0

하지만 어떻게 든 세션 지원이 필요 없다고 생각합니다. 이 Livroutes가 카풀 응용 프로그램에 대해 더 자세히 설명하겠습니다. 따라서 풀이 끝나면 비활성 상태로 돌아와서 해당 Liveroute와 관련된 모든 데이터를 수집하고 계산을 수행하여 다른 테이블에 넣어야합니다. liveroute의 값보다이 계산을 트리거하고 싶습니다. –

관련 문제