📜  GenericIPAddressField – Django 模型(1)

📅  最后修改于: 2023-12-03 15:30:53.382000             🧑  作者: Mango

GenericIPAddressField - Django 模型

在 Django 中,GenericIPAddressField 是一个用于存储 IP 地址的字段。它允许储存 IPv4 或 IPv6 地址,而不需要为每个类型创建单独的字段。

创建 GenericIPAddressField 字段

在一个 Django 模型中创建一个 GenericIPAddressField 字段如下:

from django.db import models

class IPAddress(models.Model):
    ip_address = models.GenericIPAddressField()

默认情况下,GenericIPAddressField 字段使用 IPv4。可以在 protocol 参数中设置 IPv6both 以支持 IPv6 地址或者同时支持 IPv4 和 IPv6。

class IPAddress(models.Model):
    ip_address = models.GenericIPAddressField(protocol='both')
可选参数

除了 protocol 外,GenericIPAddressField 还有以下可选参数:

unpack_ipv4

默认情况下,IPv4 地址会被打包成八个字节的二进制形式,可以使用 unpack_ipv4 参数设置其取消打包,以及存储 IPv4 地址的四个字节。

class IPAddress(models.Model):
    ip_address = models.GenericIPAddressField(unpack_ipv4=True)
null

设置为 True 可以允许该字段为空,否则该字段不能为空。

class IPAddress(models.Model):
    ip_address = models.GenericIPAddressField(null=True)
blank

设置为 True 可以允许该字段为空白,否则该字段不能为空白。

class IPAddress(models.Model):
    ip_address = models.GenericIPAddressField(blank=True)
verbose_namehelp_text

可以使用 verbose_namehelp_text 参数设置字段的名称和帮助文本。

class IPAddress(models.Model):
    ip_address = models.GenericIPAddressField(verbose_name='IP 地址', help_text='请输入 IP 地址')
数据库中的存储格式

在数据库中,GenericIPAddressField 存储为 VARCHAR(39) 类型。如果使用 IPv6 地址,字段的最大长度为 39 字符(包括可能的::ffff: 前缀和地址标识符)。如果使用 IPv4 地址,则字段的最大长度为 15 字节(不包括任何前缀)。