Reputation:
I've got a json in my view as below,
{
"name":"myname",
"age":30,
"day":20,
"month":"June",
"year":1988
}
How can I convert it to a nested JSON as below using Serializers?,
{
"name":"myname",
"age":30,
"DOB":{
"day":20,
"month":"June",
"year":1988
}
}
Upvotes: 3
Views: 982
Reputation: 8740
@No-One, Let suppose you have defined your models as follows.
http://www.django-rest-framework.org/api-guide/relations/
Use ForeignKey() for nested dictionary like
{'day': 20, 'month': 'June', 'year': 1998}
.
class Dob(models.Model):
day = models.IntegerField()
month = models.CharField(max_length=10)
year = models.IntegerField()
def __str__(self):
return str(self.day)
class User(models.Model):
name = models.CharField(max_length=50, null=False, blank=False)
age = models.IntegerField()
dob = models.ForeignKey(Dob, on_delete=models.CASCADE, null=False)
def __str__(self):
return self.name
Then I'll suggest you to define your serializers like this.
Please comment, if you've queries.
class DobSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Dob
fields = ('day', 'month', 'year')
class UserSerializer(serializers.HyperlinkedModelSerializer):
dob = DobSerializer(many=False, read_only=True);
class Meta:
model = User
fields = ('name', 'age', 'dob');
Upvotes: 1