2014-01-15 130 views
0

我想在模型/表中轉儲最近30分鐘更新的json。如何轉儲Django的最後30分鐘更新Django模型的更新?

我使用的代碼波紋管,但它沒有給我想要的結果。

它總是給我最後/最近(1對象)更新而不是30分鐘的數據。

的代碼我使用:

def encode_complex(obj): 
     if isinstance(obj, Verification): 
      mydict = dict() 
      mydict['id'] = obj.id 
      mydict['asset_code'] = obj.asset_code 
      mydict['scan_time'] =obj.scan_time.strftime('%b.%d,%Y, %I:%M %P') 
      mydict['credential'] = obj.credential 
      mydict['status'] = STATUS_CHOICES[obj.status] 
      mydict['operator'] = obj.operator 
      mydict['location'] = obj.location 
      mydict['auth_code'] = obj.auth_code 
      mydict['emp_id'] = obj.emp_id 

      return mydict 

    #This gives updates of last 30 minutes in json dump 

    def get_latest_verification(request): 
     data = Verification.objects.filter(scan_time__gte=datetime.datetime.now()-datetime.timedelta(seconds=1800)) 
     arraydata = [] 
     map(lambda x: arraydata.append(x), data) 
     encodeStr = json.JSONEncoder(default=encode_complex).encode(arraydata) 
     return HttpResponse(encodeStr) 

任何一個可以糾正我......

+0

'map(lambda x:arraydata.append(x),data)'的意圖是什麼?這與'arraydata = data [:]''有相同的作用。這與使用'data'是一回事,因爲無論如何你都不會再碰它。 – mhlester

回答

0

您可以使用serialization在Django。所以,你的函數可以更新到

def get_latest_verification(request): 
     from django.core import serializers 
     data = Verification.objects.filter(scan_time__gte=datetime.datetime.now()-datetime.timedelta(seconds=1800)) 
     encodeStr = serializers.serialize("json", data) 
     return HttpResponse(encodeStr) 

無需encode_complex()功能。