es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Condiciones para determinar si el campo A o el campo B son requeridos en Django Rest Framework.

Tengo un serializador en el que me gustaría dar la oportunidad de enviar una NUEVA dirección con una solicitud POST O dar un ID de una dirección ya existente. Uno de los dos es obligatorio, pero actualmente se solicita que se den ambos.

¿Existe alguna posibilidad de hacer que se valide con una condición?

class OrderSerializer(serializers.ModelSerializer):

    class Meta:
        model = Order
        exclude = ['in_calculation','canceled',]
        address = AdressSerializer()
        addressid = serializers.CharField(source='address')
        read_only_fields = ['id','user','status','costs','']
Tags:  ,

Answer

  1. Avatar for davy.ai

    Puede usar el método validate para verificar si tanto address como addressid están presentes en los datos. Si ninguno está presente, puede generar un ValidationError:

    def validate(self, data):
        if 'address' not in data and 'addressid' not in data:
            raise serializers.ValidationError('Se requiere address o addressid')
        return data
    

Comments are closed.