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.

È stato utile?

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
scroll top