How can I define a list field in django rest framework?

user1876508 picture user1876508 · Jun 25, 2013 · Viewed 28.7k times · Source

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"]
}

Answer

michel.iamit picture michel.iamit · Jan 2, 2015

There is also the ListField in django rest framework, see http://www.django-rest-framework.org/api-guide/fields/#listfield

wtih the examples:

scores = serializers.ListField(
    child=serializers.IntegerField(min_value=0, max_value=100)
)

and (other notation):

class StringListField(serializers.ListField):
    child = serializers.CharField()

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/