python - 如何在mongoengine stringfield中返回选择值

标签 python flask mongoengine

您好,我正在使用带有 mongoengine 的 flask ,这是我的模型

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 choices 的值:

moneda = Exchange.objects.distinct("moneda")

返回:

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

最佳答案

我建议您将 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]

关于python - 如何在mongoengine stringfield中返回选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26708421/

相关文章:

python - 使用 mongoengine 将文件上传到 DEFAULT_FILE_STORAGE 而不是 GridFs

python - mongoengine - 动态生成 Q()

python - Python 中的抽象方法异步和同步实现

python - Py2exe 创建的程序无法运行

python - Python 2.7 上的正则表达式导致在字符串中查找文本时出现问题

javascript - 在 socket.emit() 中传递参数的问题

python - 如果我使用 Flask 接收发布数据,将该数据放入 WTForms 表单并成功验证,它是否可以免受 SQL 注入(inject)攻击?

python - 当使用 noexec 挂载/tmp 时,为什么在 Python 中出现段错误?

python - 从列表中查找和排除多个匹配项的逻辑

python - 使用Flask解决静态路由和动态路由的冲突