bryansis2010 bryansis2010 - 5 months ago 58
Python Question

Django REST Framework DateTimeField format showing Python Time

Given some model

class Loan(models.Model):
time_of_loan = models.DateTimeField()
username = models.CharField()


I have attempted to use the
ModelSerializer
from Django's REST Framework to serialize the
Loan
.

class LoanSerializer(serializers.ModelSerializer):
time_of_loan = serializers.DateTimeField(
format=None, input_formats=['%Y-%m-%d %H:%M:%S',])
class Meta:
model = `Loan`
fields = ['time_of_loan', 'username']


On using the
serializer.data
to get the JSON format, when I save the first time, the first time the model is saved, the JSON is well-behaved.

{
'time_of_loan': '2016-06-20 00:00:00+08:00',
username: 'doe'
}


However, when I attempt to update the model, it "misbehaves" and it appears in a python
datetime
format.

{
'time_of_loan': datetime.datetime(2016, 6, 20, 7, 55, tzinfo=<UTC>),
'username': 'doe'
}


What change do I need to do so that, whenever the model gets serialized, it remains as the first format that I want?

FIRST EDIT



Can you show what you're doing to update the object

The question asked was what I did to update the model. I actually am using this as an audit log and so it took from an actual Django Form. In
forms.py
:

id = forms.cleaned_data.get('id')
username = forms.cleaned_data.get('username')
loan = Loan.objects.filter(id=id) #Queryset with count() = 1

loan.update(username=username)
loan_obj = loan[0]
serializer = LoanSerializer(loan_obj)
print(serializer.data)

Answer

After so much finding, I finally got the answer.

from rest_framework.renderers import JSONRenderer

serializer = LoanSerializer(loan_obj)
serializer.data
json = JSONRenderer().render(serializer.data)