[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