Valeu Dorneles, era algo desse tipo que estava precisando. Fiz um pouco diferente... coloquei um metodo direto na classe Temperatura que me retorna o valor!
Quanto ao getObject() já estou ciente disso, aprendi da pior forma possível! Acho q a galera da lista deve sempre alertar para essas "armadilhas" do plone, como você fez! -- Alexandre Marinho ITEC/AL --- Em zope-pt@yahoogrupos.com.br, Dorneles Treméa <[EMAIL PROTECTED]> escreveu > > Opa Alexandre, > > > bom acho q meu problema seja muito simples, mas nao consegui encontrar > > nada sobre isso. > > > > Tenho um tipo temperatura com field assim: > > StringField( > > name='tempo', > > widget=SelectionWidget( > > label="Tempo", > > description="Condição climática do município", > > label_msgid='Tempo_label_tempo', > > description_msgid='Tempo_help_tempo', > > i18n_domain='Tempo', > > ), > > required=1, > > vocabulary=[('ceuclaro', 'Céu claro'),('chuvasisoladas', > > 'Chuvas Isoladas'),('parcialmentenublado', 'Parcialmente > > Nublado'),('nublado', 'Nublado'),('instavel', > > 'Instável'),('chuvoso','Chuvoso'),('tempestade','Tempestade'),], > > ), > > > > Como podem ver estou setando um valor no vocabulary dele... > > ate ai tudo bem... > > > > mas quando tento acessar essa infomação so vem o valor da chave de > > cada item e nao o valor real. ex.: > > > > temps = context.portal_catalog(portal_type="Temperatura") > > return temps[0].getObject().tempo > > > > isso retorna 'ceuclaro' ao invés de 'Céu claro'... > > > > como faço para acessar o valor do dicionário e nao sua chave??? > > crie uma DisplayList com o conteúdo atual do vocabulary e use > ela como o vocabulary do field: > > tempo_vocab = DisplayList([('ceuclaro', 'Céu Claro'), ...]) > > StringField( > name='tempo', > ... > vocabulary=tempo_vocab, > ... > ) > > Então, no seu código, use algo como: > > temps = context.portal_catalog(portal_type="Temperatura") > return tempo_vocab.getValue(temps[0].getObject().tempo) > > Duas observações: > > a) evite a todo o custo o uso de getObject() nos resultados de > uma busca no catálogo, prefira sempre adicionar uma nova columa > de metadados no catálogo. > > b) evite acessar diretamente os atributos do objeto que armazenam > o valor dos fields (nem todo field armazena no objeto...), prefira > sempre usar o accessor de cada field, getTempo no caso. > > HTH, > > -- > > Dorneles Treméa > X3ng Web Technology > http://nosleepforyou.blogspot.com >