Let's say I have a class
class Tags(object):
tags = []
def __init__(self, tags):
self.tags = tags
and a custom list field
class TagsField(serializers.WritableField):
"""
Returns a list of tags, or serializes a list of tags
"""
I am not too sure where to go from here. How can I make sure that a blog post serializer defined as
class BlogPostSerializer(serializers.Serializer):
post = CharField()
tags = TagsField
would give me a json object similar to
{
"post": "Here is my blog post about python",
"tags": ["python", "django", "rest"]
}
One way to deal with arrays for a non ORM-based object is to override the
to_native
andfrom_native
methods. In your case:If you had an ORM-based object you would like to look at the
SlugRelatedField
with themany = True
attribute.From Django Rest Framework version 3.0 you can also use ListField http://www.django-rest-framework.org/api-guide/fields/#listfield
If you are using Postgesql, you can use an ArrayField
There is also the ListField in django rest framework, see http://www.django-rest-framework.org/api-guide/fields/#listfield
wtih the examples:
and (other notation):
this seems simpler (maybe this class is added later than the accepted anwser, but seems good to add this option anyway)
By the way, it's added since djang rest framework 3.0: http://www.django-rest-framework.org/topics/3.0-announcement/