Reputation: 307
I want to use ModelSerializer
to create multiple objects.
If I have a list of the data for the objects as,
data = [{object_1_data},{object_2_data},...]
and when I use model serializer to create the objects as,
serializer = serializer(data=data, many=true)
if serializer.is_valid():
objects = serializer.save()
Does the return objects
list contain the objects in the same order as earlier?
objects = [object_1, object_2, ...]
Upvotes: 3
Views: 750
Reputation: 186
Yes.
Example (in case on is needed):
Serializers must keep the object order, for DRF to keep ordering of results in their viewsets. Order is taken from the original queryset/list order.
Take the list()
method of the DRF ListModelMixin:
class ListModelMixin:
"""
List a queryset.
"""
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
(Ordering is done in the queryset and not on the serializer's resulting data)
Upvotes: 3