我正在使用django_countries
来显示国家/地区列表。现在,我有一个要求,我需要根据国家显示货币。
挪威 - 挪威克朗,欧洲和欧洲Afrika(除英国外) - 欧元,英国 - 英镑,美国和欧洲亚洲 - 美元。
这可以通过django_countries项目实现吗?或者我可以使用python或django中的其他软件包吗?
欢迎任何其他解决方案。
---------------------------更新-------------
在获得大量解决方案后,主要重点是:
Norway - NOK, Europe & Afrika (besides UK) - EUR, UK - GBP, AMERICAS & ASIA - USDs.
---------------------------- SOLUTION ------------------ --------------
我的解决方案很简单,当我意识到我无法获得任何ISO格式或包来获得我想要的东西时,我想编写自己的脚本。它只是一个基于条件的逻辑:
from incf.countryutils import transformations
def getCurrencyCode(self, countryCode):
continent = transformations.cca_to_ctn(countryCode)
# print continent
if str(countryCode) == 'NO':
return 'NOK'
if str(countryCode) == 'GB':
return 'GBP'
if (continent == 'Europe') or (continent == 'Africa'):
return 'EUR'
return 'USD'
不知道这是否有效,希望听到一些建议。
谢谢大家!
答案 0 :(得分:12)
有几个模块:
import pycountry
country = pycountry.countries.get(name='Norway')
currency = pycountry.currencies.get(numeric=country.numeric)
print currency.alpha_3
print currency.name
打印:
NOK
Norwegian Krone
import moneyed
country_name = 'France'
for currency, data in moneyed.CURRENCIES.iteritems():
if country_name.upper() in data.countries:
print currency
break
打印EUR
import money
country_name = 'France'
for currency, data in money.CURRENCY.iteritems():
if country_name.upper() in data.countries:
print currency
break
打印EUR
pycountry
会定期更新,py-moneyed
看起来很棒,功能超过python-money
,现在还没有维护python-money
。
希望有所帮助。
答案 1 :(得分:3)
django-countries
只需将一个字段交给您的模型(以及带有标志图标的静态包)。该字段可以在countries.py
的列表中保存2个字符的ISO,如果此列表是最新的(尚未选中),这很方便,因为它可以节省大量的输入。
如果您希望创建一个具有易于实现的详细数据的模型,例如
class Country(models.Model):
iso = CountryField()
currency = # m2m, fk, char or int field with pre-defined
# choices or whatever suits you
>> obj = Country.objects.create(iso='NZ', currency='NZD')
>> obj.iso.code
u'NZ'
>> obj.get_iso_display()
u'New Zealand'
>> obj.currency
u'NZD'
预加载数据的示例脚本,稍后可以将其导出以创建一个管理样本数据的更好方法。
from django_countries.countries import COUNTRIES
for key in dict(COUNTRIES).keys():
Country.objects.create(iso=key)
答案 2 :(得分:1)
我刚刚发布了country-currencies这个模块,可以为您提供国家/地区代码到货币的映射。
>>> from country_currencies import get_by_country
>>> get_by_country('US')
('USD',)
>>> get_by_country('ZW')
('USD', 'ZAR', 'BWP', 'GBP', 'EUR')