Django primarykey serializer "This field may not be null" while allow_null=True

Viewed 8910

I've been struggling with this problem.

I am not sure what I'm missing.

Please let me know if you have any suggestions..!!

models.py:

co_manager = models.ManyToManyField(BookRunner, blank=True, null=True, related_name="deal_co_manager")

views.py:

 class DealAdminViewSet(viewsets.ModelViewSet):
      queryset = Deal.objects.all()
      serializer_class = CreateDealSerializer

      def create(self, request, format=None):
          data = ...all things data here.
          serializer = CreateDealSerializer(data=deal)
          print serializer
          co_manager_array = []
          if serializer.is_valid():
              serializer.save()
              return Response(status=status.HTTP_201_CREATED)
          else:
              return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

serializer.py:

class CreateDealSerializer(serializers.Serializer):
    co_manager = serializers.PrimaryKeyRelatedField(allow_null=True, many=True, queryset=BookRunner.objects.all(), required=False)
2 Answers

Just send an empty list if serializer is set with many = True, allow_null=True

from serliazer:

many_field = serializers.PrimaryKeyRelatedField(queryset=qs, read_only=False, many=True, allow_null=True)

class Meta:
    model = ModelName
    fields = (
        'many_field ',
         ...)
    extra_kwargs = {
        'many_field': {'required': False},
    }

and in the requests data:

 data = {'NOT_many_field': None,
 'many_field': []}
Related