[Python] Marshmallow: schema variabile in base al valore di altri campi
Riccardo Magliocchetti
riccardo.magliocchetti a gmail.com
Gio 3 Dic 2020 16:38:43 CET
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
Maggiori informazioni sulla lista
Python