django 中存储手机号的字段, 使用 Django 库 pip install django-phonenumber-field[phonenumbers]

发布时间 2023-06-10 12:22:41作者: zhangmingda

原文参见: https://www.delftstack.com/zh/howto/django/django-phone-number-field/

使用第三方 Django 应用程序的 PhoneNumberField 存储电话号码

要存储电话号码,我们可以使用实现此字段的第三方 Django 应用程序或库:PhoneNumberField

你可以在此处找到此库或应用程序的 GitHub 仓库。

根据官方的 README,这个 Django 库可以验证和转换电话号码。该库与另一个 Python 库 python-phonenumbers 接口,后者是支持 Android 电话号码处理的 Google 的 libphonenumber 库的一个端口。

安装 Django 库

可以使用以下 pip 命令下载这个 Django 库:

pip install django-phonenumber-field[phonenumbers]

由于它是一个广泛的库,就大小而言,你可能需要下载较轻的版本。要下载此库的较轻版本,请使用以下命令:

pip install django-phonenumber-field[phonenumberslite]

设置 Django 库

要使用这个应用程序或库,我们必须将它添加到我们项目的 settings.py 文件中。应用程序名称必须在 INSTALLED_APPS 中输入,如下所示:

INSTALLED_APPS = [
    # Other apps
    "phonenumber_field",
]

使用 Django 库

该库有一个模型字段 PhoneNumberField,可用于存储电话号码。我们的模型将如下所示:

from phonenumber_field.modelfields import PhoneNumberField

class UserInfo(models.Model):
    name = models.CharField(max_length=4096, verbose_name="人员称呼")
    email = models.EmailField(verbose_name="邮箱地址")
    phone = PhoneNumberField(unique=True, null=True, blank=True, verbose_name="电话号码")
    description = models.CharField(max_length=8192, verbose_name="备注描述", null=True, blank=True)

    def __str__(self):
        if not self.description:
            d = ""
        else:
            d = self.description
        if not self.phone:
            f = ""
        else:
            f = self.phone.__str__()
        return self.name + ": " + str(self.email) + " " + f + " " + d

    class Meta:
        verbose_name = "人员联系方式"

 

PhoneNumberField 字段在内部基于 CharField 空间,并根据国际电话号码标准以字符串的形式存储号码。

 

要了解有关此库的更多信息,请参阅官方文档。