看起来localflavor的一般用法是导入特定国家/地区的包:
from localflavor.nz.forms import NZRegionSelect
如果我的网站支持多个国家/地区,该怎么办?是否存在通用代理与国家无关,例如:
from localflavor.autodetect.forms import RegionSelect
答案 0 :(得分: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)
由于不同的地区会有不同的选择。