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.