Необязательные значения Django-rest-Framework

Я создаю API на Django-rest-framework, но у меня есть модель, которая имеет два основных поля. Запрос должен быть валидным, если пользователь отправил одно поле, по крайней мере, он может отправить оба поля. Проблема в том, что когда я создаю сериализатор, я получаю ошибку для набора необязательных полей

вот мой код

models.py

class KG(models.Model):
   content = models.TextField() 
   image = models.ImageField(upload_to=nameFile, validators = [FileExtensionValidator(['png','jpg','jpeg'])],blank=True)

serializer.py

class KGSerializer(ModelSerializer):
class Meta:
    model = KG
    fields = ['content',]

    def __init__(self, *args, **kwargs):
        if self.image:
            self.Meta.fields = list(self.Meta.fields)
            self.Meta.fields.append('image')
        super(PostSerializer, self).__init__( *args, **kwargs)

views

class createPostAPIView(APIView):

def post(self, request):
    data = request.data

    content = data['content']
    image = data['image']
    

    serializer = KGSerializer(data=data)
    serializer.is_valid(raise_exception=True)
    serializer.save()

    return Response(serializer.data)

но когда я запрашиваю без изображения, я получаю

Этот экземпляр QueryDict является неизменяемым

есть ли способ разрешить любому полю быть необязательным

Да, есть способ, вы можете попробовать следующее

class BillingRecordSerializer(serializers.ModelSerializer):
def validate(self, attrs):
    # Apply custom validation either here, or in the view.

class Meta:
    fields = ['client', 'date', 'amount']
    extra_kwargs = {'client': {'required': False}}
    validators = []  # Remove a default "unique together" constraint.

Для получения дополнительной информации, пожалуйста, проверьте эту ссылку

Вернуться на верх