Rakesh
Rakesh

Reputation: 82765

Serialize datetime to JSON

How do I get DateTimeField from MySQL in Django in JSON format? I got an error when I executed the code

Date.time cannot be serialized in json

(data holds a lot of values)

data = json.dumps(data)

But this was fixed by adding

ALL_data = serializers.serialize("json", data, ensure_ascii=False)

But now I get 'str' object has no attribute '_meta'.

Upvotes: 27

Views: 31961

Answers (3)

Rakesh
Rakesh

Reputation: 82765

DjangoJSONEncoder solved my problem.

import json
from django.core.serializers.json import DjangoJSONEncoder
data = json.dumps(data, cls=DjangoJSONEncoder)

Upvotes: 89

Chris Pratt
Chris Pratt

Reputation: 239300

Whenever you see an error message of the form ... object has no attribute '_meta' that is a clear-cut sign that a method was expecting a queryset but got something else. In this particular situation, serializers.serialize must have a queryset for its second argument. You can't use a list, dictionary, etc., and definitely not a string.

Where is data being set. Check to make sure it's being assigned a true queryset. You might also want to post more of your code, if you're still having issues. It's difficult to diagnose the problem much more, out of context.

Upvotes: 1

Ignacio Vazquez-Abrams
Ignacio Vazquez-Abrams

Reputation: 798746

Django's serializers are only meant to be used on query sets; you will have to find a different way to solve your problem, such as converting the datetime to something else first.

Upvotes: 6

Related Questions