如何转储django模型最近30分钟更新的json?

时间:2014-01-15 07:19:25

标签: python django django-models

我想在模型/表格中转储最后30分钟更新的json。

我使用下面的代码,但它没有给我想要的结果。

它总是给我最后/最近(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)

任何人都可以纠正我......

1 个答案:

答案 0 :(得分:0)

您可以在django中使用serialization。所以你的功能可以更新到

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()功能。