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