title: ListSerializer in Django Restful - When is it called?
body: <p>I have the following code for my <code>serializers.py</code>: </p>
  
  <pre><code>from rest_framework import serializers
  
  from django.db import transaction
  from secdata_finder.models import File
  
  class FileListSerializer(serializers.ListSerializer):
      @transaction.atomic
      def batch_save_files(file_data):
          files = [File(**data) for data in file_data]
          return File.objects.bulk_create(files)
  
      def create(self, validated_data):
          print("I am creating multiple rows!")
          return self.batch_save_files(validated_data)
  
  class FileSerializer(serializers.ModelSerializer):
      class Meta:
          list_serializer_class = FileListSerializer
          model = File
          fields = (...) # omitted
  </code></pre>
  
  <p>I'm experimenting with it on my Django test suite:</p>
  
  <pre><code>def test_file_post(self):
      request = self.factory.post('/path/file_query', {"many":False})
      request.data = {
          ... # omitted fields here
      }
      response = FileQuery.as_view()(request)
  </code></pre>
  
  <p>It prints <code>I am creating multiple rows!</code>, which is <strong>not what should happen</strong>.</p>
  
  <p>Per the <a href="http://www.django-rest-framework.org/api-guide/serializers/#listserializer" rel="nofollow noreferrer">docs</a>:</p>
  
  <blockquote>
    <p>... customize the create or update behavior of multiple objects.
    For these cases you can modify the class that is used when many=True is passed, by using the list_serializer_class option on the serializer Meta class.</p>
  </blockquote>
  
  <p>So what am I not understanding? I passed in <code>many:False</code> in my post request, and yet it still delegates the <code>create</code> function to the <code>FileListSerializer</code>!</p>