update serializermethodfield queryset modelviewset framework python django serialization django-rest-framework

python - serializermethodfield - Requisito de campo condicional con el serializador DjangoRestFramework



partial update django rest framework (1)

Puede modificar los campos en el método BookingSerializer de BookingSerializer . Después de la inicialización, los campos son accesibles en self.fields

class BookingSerializer(Serializer): reservation_history_id = serializers.IntegerField() credit_card = ''api.v1.serializer.AddCreditCardSerializer()'' save_credit_card = serializers.BooleanField() promo_code = serializers.BooleanField(required=False) def __init__(self, *args, **kwargs): # initialize fields super(BookingSerializer, self).__init__(*args, **kwargs) # now modify the creditcard field self.fields[''credit_card''].required = yourBackendMethod()

Tengo estos serializadores anidados en Django Rest Framework 2:

class BookingSerializer(Serializer): reservation_history_id = serializers.IntegerField() credit_card = ''api.v1.serializer.AddCreditCardSerializer()'' save_credit_card = serializers.BooleanField() promo_code = serializers.BooleanField(required=False) # validation stuff here ... class AddCreditCardSerializer(ModelSerializer): """ Credit card model serializer """ expiration_date = serializers.CharField() card_number = serializers.CharField() security_code = serializers.IntegerField() # validation stuff here ...

En mi ApiView BookingApiView , estoy llamando a un BookingSerializer . Me gustaría que los campos de tarjetas de crédito sean obligatorios o no, según un método de backend que devuelva True o False. ¿Cómo puedo hacer esto? Gracias.