从pycountry返回country_code

时间:2016-06-28 16:58:13

标签: python django

我的usermodel中有两个字段:

country = models.CharField(max_length=20, null=True)
code = models.CharField(max_length=2, null=True)

我希望第二次在我进入我的国家后自动更改,我知道如何在python shell中执行此操作,但我如何在django中执行此操作?

我试图在模板中打印两位数代码。

编辑:我这样做了:

class UserProfile(models.Model):
...
country = models.CharField(max_length=20, null=True)
code = models.CharField(max_length=2, null=True)

def save(self,*args, **kwargs):
    name=country
    self.code = pycountry.countries.get(name).alpha2
    super(UserProfile, self).save(*args, **kwargs)

pycountry代码没问题,这是我在python shell中获取代码的方式,但是 当我在管理页面中更改国家/地区时代码正在抛出

global name 'country' is not defined

1 个答案:

答案 0 :(得分:0)

请参阅模型上的django文档:https://docs.djangoproject.com/en/1.9/topics/db/models/

你想要这样的东西:

class YourModel(models.Model):

    country = models.CharField(max_length=20, null=True)
    code = models.CharField(max_length=2, null=True)

    def save(self,*args, **kwargs):
        if self.country == foo: #this can be any logic you use to assign the code value
            self.code = a_value
        else:
            self.code = another_value
        super(YourModel, self).save(*args, **kwargs)

这应该是你正在寻找的东西。如果您发现任何问题,请告诉我,希望它有所帮助!