Ciao Federico,

On 03/12/20 16:24, Federico Fissore wrote:
Ciao a tutti

Usate marshmallow per fare validazione dell'input?

L'ho usato diverso tempo fa

Mi trovo con un problema che non so bene come affrontare: come posso decidere a runtime quale Schema utilizzare per la validazione?

A nested dovresti poter passare una callable e quindi se gli arriva tutta la roba da deserializzare puoi metterci un if lì dentro. Altrimenti prima validi con uno Schema l'eta e poi passi il resto allo schema che valida la quantità giusto.

Diciamo che ho una API che serve a inviare un ordine di acquisto di bevande: se l'utente è minorenne può ordinare al massimo una bottiglia, altrimenti può anche svuotarmi il magazzino

Gli schema sono:

class Ordine(Schema):
   eta = fields.Integer(required=True)
   bevanda = fields.Nested(BevandaMaggiorenni, required=True)


class BevandaMaggiorenni(Schema):
   quantita = fields.Integer(required=True)


class BevandaMinorenni(Schema):
   quantita = fields.Integer(required=True)

   @validates('quantita')
   def validates_quantita(self, quantita):
     if quantita > 1:
       raise ValidationError('troppe bottiglie')

--
Riccardo Magliocchetti
@rmistaken

http://menodizero.it
_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

Rispondere a