Python 如何在mongoengine stringfield中返回选项值

Python 如何在mongoengine stringfield中返回选项值,python,flask,mongoengine,Python,Flask,Mongoengine,嗨,我在用mongoengine的烧瓶这是我的模型 class Change(db.Document): code = (('CAD', 'Dolar Canadiense'), ('GBP', 'Libra Esterlina'), ('MXN', 'Peso Mexicano'), ('CHF', 'Franco Suiso'), ('EUR', 'Euro'),

嗨,我在用mongoengine的烧瓶这是我的模型

class Change(db.Document):
    code = (('CAD', 'Dolar Canadiense'),
            ('GBP', 'Libra Esterlina'),
            ('MXN', 'Peso Mexicano'),
            ('CHF', 'Franco Suiso'),
            ('EUR', 'Euro'),
            ('DKK', 'Corona Danesa'),
            ('SEK', 'Corona Sueka'),
            ('JPY', 'Yen Japones'),
            ('CUP', 'Peso Cubano'),
            ('PAB', 'Balboa Panama'),
            ('AUD', 'Dolar Australiano'),
            ('USD', 'Dolar Estadounidense'),
            ('NOK', 'Corona Noruega'))

    fecha = db.DateTimeField(required = True, unique_with = 'moneda')
    moneda = db.StringField(max_length=3, choices=code, required = True)
    recanje = db.FloatField(required  = True)
    canje = db.FloatField(required = True)

    @db.queryset_manager
    def objects(doc_cls, queryset):
        return queryset.order_by('date')
在进行查询时,如何获取de选项的值:

moneda = Exchange.objects.distinct("moneda")
返回:

['Dolar Canadiense','Libra Esterlina'...]

要获取选择项的详细名称,需要调用
obj.get\u display()

因此,要获得您的列表,您需要执行以下操作:

[i.get_moneda_display() for i in moneda]

我建议您将
code
变量替换为如下字典:

codes = {'CAD': 'Dolar Canadiense',
         'GBP': 'Libra Esterlina',
         'MXN': 'Peso Mexicano',
         'CHF': 'Franco Suiso',
         'EUR': 'Euro',
         'DKK': 'Corona Danesa',
         'SEK': 'Corona Sueka',
         'JPY': 'Yen Japones',
         'CUP': 'Peso Cubano',
         'PAB': 'Balboa Panama',
         'AUD': 'Dolar Australiano',
         'USD': 'Dolar Estadounidense',
         'NOK': 'Corona Noruega'
         }
然后,您可以将模型更改为仅存储货币代码:

codigo_moneda = db.StringField(max_length=3, choices=codes.keys(), required = True)
并添加属性以返回货币的全名:

@property
def nombre_moneda(self):
  return self.codes[self.codigo_moneda]