您好,我正在使用带有 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/