0

これは初歩的かもしれませんが、私にとっては私のレベルを超えていることを証明しています. そして、私の感謝は前もって行きます。

私が達成したかったのは、クエリを実行しているデータの行であり、非アクティブな Liveroute テーブルのフィールドの値に基づいてクエリを実行した後、経度と緯度の値の 2 つのセット間の距離を計算する計算を実行することです。 hasersine 式を使用して、経度と緯度の 2 点間の距離を計算できます。しかし、この計算プロセスには時間がかかる可能性があり、テーブル内の行数が多いと時間通りにデータを表示できないことに注意してください。そこで、計算結果を別のテーブルに保存し、そのテーブルからデータを取り出して表示しようと考えました。

非アクティブになるテーブルの値に対して計算を実行します。以下は、Liveroute モデル クラスのルートで行がアクティブか非アクティブかを示す Django コードです。

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

isActive関数のこの値に基づいて、次のように計算を実行したかった

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)

私の問題は、このすべてのデータを別のテーブルに挿入して、後でそれらの値を取得できるようにする方法です。アドバイスをいただければ幸いです。

4

1 に答える 1

1

セッションをトリガーするには、次のようにする必要があります。

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

データを取得して使用するには、次の条件を満たしている必要があります。

travellers = request.session.get('travellers')
于 2013-02-25T09:26:23.127 に答える