[Python] Marshmallow: schema variabile in base al valore di altri campi
Federico Fissore
federico a fsfe.org
Gio 3 Dic 2020 16:24:06 CET
Ciao a tutti
Usate marshmallow per fare validazione dell'input?
Mi trovo con un problema che non so bene come affrontare: come posso
decidere a runtime quale Schema utilizzare per la validazione?
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
Due json validi sono:
per i minorenni
{
eta: 15,
bevanda: {
quantita: 1
}
}
per i maggiorenni:
{
eta: 20,
bevanda: {
quantita: 100
}
}
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')
Come posso fare per cambiare lo schema associato a 'bevanda' a seconda
del valore di 'eta'?
ciao
federico
Maggiori informazioni sulla lista
Python