Валидация сериализатора Django

Я использую сериализаторы для валидации. Когда я отправляю ключ с именем ip_port, который является списком в форме-данных postman, то приходит ответ 'This field is required' для ключа ip_port. Также я прилагаю изображение postman, где я получаю ответ. Пожалуйста, помогите кому-нибудь и заранее спасибо. ответ postman при тестировании POST api

views.py
def post(self,request,format=None):
        data=request.data   
        serializer=UserRequestFormSerializer(data=data)
       
        
        if serializer.is_valid(raise_exception=True):
            # breakpoint()
            serializer.save(user=self.request.user)
            # print(serializer.data)
            sdata=serializer.data
            return Response({'detail':'User Request Form created successfully','created_data':sdata},status=status.HTTP_201_CREATED)
        return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
serializers.py
class UserRequestFormSerializer(serializers.ModelSerializer):
    ip_port = IPPortSerializer(many=True)    
    district=serializers.CharField(source='user.district',read_only=True)
    
    class Meta:
        model=UserRequestForm
        fields='__all__'
        read_only_fields=['user','district']
  
    
    def to_representation(self, instance):
        data = super().to_representation(instance)
        if instance.form_status == "REJECT":
            data['rejection_data'] = RejectionTableSerializer(instance.rejectiontable_set.last()).data
        return data
        
    def create(self, validated_data):
        ipport=validated_data.pop('ip_port')
        user=UserRequestForm.objects.create(**validated_data)
        if ipport:
            ls=[]
            for i in ipport:
                ls.append(IPPort.objects.create(**i))
            user.ip_port.set(ls)            
        return user
models.py
class UserRequestForm(models.Model):
    #All Foreign keys:
    observer_account_type = models.CharField(max_length=200, choices=ACCOUNT_TYPE, blank=True,default='USER')
    decision_taken_by=models.ForeignKey(User,on_delete=models.CASCADE,related_name='userrequestform_decision_taken_by',blank=True,null=True)
    user=models.ForeignKey(User,on_delete=models.CASCADE)
    ip_port=models.ManyToManyField(IPPort)
    
    #to be filled by the user:
    sys_date=models.DateField()
    sys_time=models.TimeField()
    target_type=models.CharField(max_length=200,choices=TARGET_TYPE)
    case_ref=models.CharField(max_length=200)
    case_type=models.CharField(max_length=200)
    request_to_provide=models.CharField(max_length=200,choices=REQUEST_TO_PROVIDE)
    mobile_number=models.BigIntegerField(validators=[mobile_regex_validator])
    cell_id=models.CharField(max_length=200)
    imei=models.CharField(max_length=200)    
    select_tsp=models.ForeignKey(Tsp,on_delete=models.PROTECT)
    duration_date_from=models.DateField()
    duration_date_to=models.DateField()
    duration_time_from=models.TimeField()
    duration_time_to=models.TimeField()
    user_file=models.FileField(upload_to='user_doc',blank=True,null=True)
    
    #to be filled by TSP and CYBERDOME
    form_status=models.CharField(max_length=200,choices=FORM_STATUS,blank=True,null=True,default='PENDING')
    admin_status=models.CharField(max_length=200,choices=FORM_STATUS,blank=True,null=True,default='PENDING')
    
    #for tsp replie
    requested_date=models.DateField(blank=True,null=True)
    replied_date=models.DateField(blank=True,null=True)
    #for cyberdome view
    approval_or_reject_date=models.DateField(blank=True,null=True)
    approval_or_reject_time=models.TimeField(blank=True,null=True)
    
    #For TSP to upload file after approval
    tsp_file=models.FileField(upload_to='tsp_doc',blank=True)
      
    
    class Meta:
        ordering = ('id',)
        
    def __str__(self):
        return str(self.mobile_number)


class IPPort(models.Model):    
    ip=models.CharField(max_length=200,validators=[ip_regex_validator])
    port=models.IntegerField()
    date_from=models.DateField(blank=True,null=True)
    date_to=models.DateField(blank=True,null=True)
    time_from=models.TimeField(blank=True,null=True)
    time_to=models.TimeField(blank=True,null=True)
    def __str__(self) -> str:
        return f'{self.ip}{self.port}'
Вернуться на верх