You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

django_countries获取国家三元代码时alpha3属性报错解决方法

问题原因

直接遍历from django_countries import countries导入的countries实例时,迭代返回的每个元素是(两位alpha2国家代码, 国家名称)格式的普通二元元组,不是带.name、.alpha3属性的实体对象,调用.alpha3自然会报属性不存在的错误。

正确写法

二选一即可:

  • 写法1:用内置映射直接取三位码,不用额外导包,性能最好
from django_countries import countries

def populate_countries():
    for alpha2_code, country_name in countries:
        alpha3_code = countries.alpha3[alpha2_code]
        Country.objects.get_or_create(
            country_name=country_name,
            country_code=alpha3_code
        )
  • 写法2:实例化官方Country对象拿属性,适合后续还要取国家其他扩展属性的场景
from django_countries import countries
from django_countries.fields import Country as DCountry

def populate_countries():
    for alpha2_code, _ in countries:
        country_obj = DCountry(alpha2_code)
        Country.objects.get_or_create(
            country_name=country_obj.name,
            country_code=country_obj.alpha3
        )

别多此一举写list(countries)强转,转成普通列表后所有元素都是原生元组,会丢失django_countries封装的扩展查询能力。

内容的提问来源于stack exchange,提问作者Khan Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 11:09:28