2014-01-15 129 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()功能。