Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
157 views
in Technique[技术] by (71.8m points)

python - Does DRF Model serializer preserve the order in the list when creating multiple objects?

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, ...]
question from:https://stackoverflow.com/questions/65857486/does-drf-model-serializer-preserve-the-order-in-the-list-when-creating-multiple

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...