Необязательные значения 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.
Для получения дополнительной информации, пожалуйста, проверьте эту ссылку