Come creare campi dinamici a Google App Engine Expando classe?
-
08-10-2019 - |
Domanda
Ho una classe db expando chiamato widget di.
Sto passando una stringa JSON e convertirlo in un dict e poi aggiungerlo al datastore.
La mia domanda è come posso ciclo attraverso il mio dict per creare campi dinamici.
widget = Widget.get_by_key_name(key_name)
widget.name = self.request.get('wname')
fields = simplejson.loads(self.request.get('wcontents'))
for k,v in fields.iteritems():
widget.k = v
Questo rende "k" come il mio nome del campo come opporsi al valore k nel dict.
Soluzione
La sintassi widget.k
fa riferimento al k
attributo oggetto widget
. Per in modo dinamico di scegliere quale attributo di impostare, utilizzare il built-in setattr
metodo :
setattr(widget, k, v)
dinamicamente impostando un attributo come questo creerà il campo su quel particolare entità.
Altri suggerimenti
Prova:
for k, v in fields.items()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow