📅  最后修改于: 2023-12-03 15:30:53.382000             🧑  作者: Mango
在 Django 中,GenericIPAddressField
是一个用于存储 IP 地址的字段。它允许储存 IPv4 或 IPv6 地址,而不需要为每个类型创建单独的字段。
在一个 Django 模型中创建一个 GenericIPAddressField
字段如下:
from django.db import models
class IPAddress(models.Model):
ip_address = models.GenericIPAddressField()
默认情况下,GenericIPAddressField
字段使用 IPv4。可以在 protocol
参数中设置 IPv6
或 both
以支持 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_name
和 help_text
可以使用 verbose_name
和 help_text
参数设置字段的名称和帮助文本。
class IPAddress(models.Model):
ip_address = models.GenericIPAddressField(verbose_name='IP 地址', help_text='请输入 IP 地址')
在数据库中,GenericIPAddressField
存储为 VARCHAR(39)
类型。如果使用 IPv6 地址,字段的最大长度为 39 字符(包括可能的::ffff:
前缀和地址标识符)。如果使用 IPv4 地址,则字段的最大长度为 15 字节(不包括任何前缀)。