Je sais que cette question a été posée il y a un certain temps, mais je l'ai trouvée en essayant de la résoudre moi-même.
Il s'avère que si vous passez many=True
lors de l'instanciation de la classe de sérialiseur pour un modèle, elle peut alors accepter plusieurs objets.
Ceci est mentionné aquí dans la documentation du cadre de repos de django
Dans mon cas, ma vue ressemblait à ceci :
class ThingViewSet(viewsets.ModelViewSet):
"""This view provides list, detail, create, retrieve, update
and destroy actions for Things."""
model = Thing
serializer_class = ThingSerializer
Je n'avais pas vraiment envie d'écrire un tas de textes passe-partout juste pour avoir un contrôle direct sur l'instanciation du sérialiseur et passer l'information à l'utilisateur. many=True
Ainsi, dans ma classe de sérialiseur, je surcharge la fonction __init__
à la place :
class ThingSerializer(serializers.ModelSerializer):
def __init__(self, *args, **kwargs):
many = kwargs.pop('many', True)
super(ThingSerializer, self).__init__(many=many, *args, **kwargs)
class Meta:
model = Thing
fields = ('loads', 'of', 'fields', )
Envoi de données à l'URL de la liste pour cette vue dans le format :
[
{'loads':'foo','of':'bar','fields':'buzz'},
{'loads':'fizz','of':'bazz','fields':'errrrm'}
]
Création de deux ressources avec ces détails. Ce qui était bien.