PriceListItem.objects.get(id=tarif_id).price_eur
CURRENCY='eur'
我想根据settings.py
中的CURRENCY变量选择其他信息
PriceListItem.objects.get(id=tarif_id).price_+settings.CURRENCY
有可能吗?
答案 0 :(得分:5)
好的。实际上,这与Django无关。您可以通过纯Python来获取实例的属性:
getattr(PriceListItem.objects.get(id=tarif_id), 'price_'+settings.CURRENCY)
请注意,在模型上有一个方法可以接受货币作为参数并返回正确的数据(例如,通过我上面写的那一行),可能是一个更好的主意。
答案 1 :(得分:3)
我认为这应该有效
item = PriceListItem.objects.get(id=tarif_id)
value = getattr(item, price_+settings.CURRENCY)
答案 2 :(得分:1)
如果只对特定于的列感兴趣,可以使用.values_list
使查询更高效:
my_price = PriceListItem.objects.values_list_(
'price_{}'.format(settings.CURRENCY),
flat=True
).get(id=tarif_id)
这只会从数据库中获取特定的列,这可能比(首先)将整个行读取到内存中,然后再丢弃其余所有列要快(一点)。
因此,my_price
不是PriceListItem
对象,而是为特定price_cur
列存储的值。
这将导致查询如下:
SELECT pricelistitem.price_cur
FROM pricelistitem
WHERE id=tarif_id