Django Localflavor для международного сайта

Похоже, что общее использование localflavor - это импорт пакета для конкретной страны:

from localflavor.nz.forms import NZRegionSelect

Что делать, если у меня есть сайт, который поддерживает несколько стран? Есть ли общий прокси, чтобы быть независимым от страны, что-то вроде:

from localflavor.autodetect.forms import RegionSelect

1 ответ

__import__ сделает свое дело:

def get_region_select(country_code):
    module_path = 'django.contrib.localflavor.{}'.format(country_code)
    try:
        module = __import__(module_path, fromlist=['forms'])
    except ImportError:
        return None

    fieldname = '{}RegionSelect'.format(country_code.upper())
    if hasattr(module.forms, fieldname):
        return getattr(module.forms, fieldname)()
    return None

Адаптировано с: http://codeinthehole.com/writing/validating-international-postcodes-in-django/

Затем в вашем шаблоне вам придется перезагружать страницу каждый раз, когда вы меняете страну, и делать что-то подобное в представлении:

form.fields['region'].widget = get_region_select(country)

Поскольку разные регионы будут иметь разные варианты.

Другие вопросы по тегам