django код валюты страны
Я использую django_countries
для отображения списка стран. Теперь у меня есть требование, когда мне нужно показать валюту в соответствии со страной.
Норвегия-NOK, Европа и Африка (кроме Великобритании) - EUR, Великобритания - GBP, Америка и Азия-USDs.
может ли это быть достигнуто с помощью проекта django_countries? или есть ли другие пакеты в python или django, которые я мог бы использовать для этого?
любое другое решение приветствуется также.
--------------------------- обновление -------------
Основной акцент делается на этом после получения множества решений:
Norway - NOK, Europe & Afrika (besides UK) - EUR, UK - GBP, AMERICAS & ASIA - USDs.
---------------------------- раствор --------------------------------
мое решение было довольно простым, когда я понял, что не могу получить какой-либо формат 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'
не знаю, является ли это эффективным способом или нет, хотел бы услышать некоторые предложения.
спасибо всем!
3 ответов
есть несколько модулей, там:
-
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
не поддерживается.
надеюсь, это поможет.
django-countries
просто передает вам поле для сопряжения с вашей моделью (и статический пакет со значками флага). Поле может содержать 2 символа ISO из списка в countries.py
что удобно, если этот список обновлен (не проверен), потому что он экономит много ввода.
если вы хотите создать модель с подробными данными, которая легко достигается, например
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)
Я только что выпустил страны-валюты модуль, который дает вам отображение кодов стран, валют.
>>> from country_currencies import get_by_country
>>> get_by_country('US')
('USD',)
>>> get_by_country('ZW')
('USD', 'ZAR', 'BWP', 'GBP', 'EUR')