django postgresql netfields实现

django-netfields的Python项目详细描述


https://secure.travis-ci.org/jimfunk/django-postgresql-netfields.png

此项目试图为 詹戈。在django pre 1.4中,内置的IPAddressField不支持ipv6 并在所有查找中使用无效的HOST()强制转换。从1.4开始,您可以使用 GenericIPAddressField用于ipv6,但转换问题仍然存在。

除了基本的IPAddressField替换aCIDR和 已添加MACADDR字段。这个库还提供了一个管理器 允许直接在orm中进行高级的基于ip的查找。

在python中,ip地址字段的值表示为 ipaddress模块。在python 2.x中,使用backport。mac地址 字段表示为来自netaddr模块的eui类型。

依赖关系

当前版本的代码的目标是django>;=1.8支持,因为这依赖于 大量使用orm内部组件和支持多个版本是非常棘手的。

入门

确保netfields位于PYTHONPATHINSTALLED_APPS中。

InetAddressField将postgresql中的值存储为类型INET。在 python,该值将表示为ipaddress.ip_interface对象 表示IP地址和网络掩码/前缀长度对,除非 store_prefix_length参数设置为false`,在这种情况下 将表示为ipaddress.ip_address对象。

fromnetfieldsimportInetAddressField,NetManagerclassExample(models.Model):inet=InetAddressField()# ...objects=NetManager()

CidrAddressField将postgresql中的值存储为类型CIDR。在 python,该值将表示为ipaddress.ip_network对象。

fromnetfieldsimportCidrAddressField,NetManagerclassExample(models.Model):inet=CidrAddressField()# ...objects=NetManager()

MACAddressField将postgresql中的值存储为类型MACADDR。在 python,该值将表示为netaddr.EUI对象。请注意 eui对象的默认文本表示与 netaddr模块。它以更常用的格式表示 在网络实用程序和网络管理员(00:11:22:aa:bb:cc)中。

fromnetfieldsimportMACAddressField,NetManagerclassExample(models.Model):inet=MACAddressField()# ...

对于InetAddressFieldCidrAddressField,需要NetManager。 以获得额外的查找。查找INETCIDR 数据库类型的处理方式与运行vanilla django时不同。 所有查找都是不区分大小写的,并且在任何时候都避免了基于文本的查找 可能的。除了django的默认查找类型之外,还有 添加:

__net_contained
包含在给定网络中
__net_contained_or_equal
包含在给定网络内或等于给定网络
__net_contains
包含给定地址
__net_contains_or_equals
包含或等于给定的地址/网络
__net_overlaps
包含或由给定地址包含
__family
匹配给定的地址系列
__host
匹配地址的主机部分,而不考虑前缀长度

它们与 http://www.postgresql.org/docs/9.4/interactive/functions-net.html

CidrAddressField包括两个额外的查找:

__max_prefixlen
最大值(包含)^ {t5} $前缀,不区分IPv4和IPv6 < /dD>
__min_prefixlen
前缀CIDR的最小值(含)不区分IPv4和IPv6

勘误表

类似项目

https://bitbucket.org/onelson/django-ipyfield试图解决一些相同的问题 作为此库发布。然而,不是只支持通过适当的 字段类型ipyfield当前使用VARCHAR(39)作为伪无符号64位 实施中的编号。

历史记录

主回购协议最初被保留 2013年4月下旬,该项目被转移到https://github.com/jimfunk/django-postgresql-netfields 将火炬传递给实际使用此代码的人:—)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java理解泛型   java Guava:如何自定义减少多重映射?   java无法构建实体管理器工厂JPA/Hibernate   不区分大小写的LDAP搜索   在java中同时调用所有类对象中的方法   java做高级数字计算?2.1k等于2100等。。?   java Camel netty组件:未能创建选择器   exceljava。lang.ClassCastException:ExcelStreamAction无法强制转换为com。开放交响乐团。xwork2。行动   java避免对嵌套a4j:区域进行验证   java如何使一帧在1秒内显示50次,每次显示时消失   java一个HashMap的遍历,我得到NullPointerException   windows HP Stream 8平板电脑。。。Java swing JScrollPane滚动在触摸屏上不工作   java如何在运行时根据用户/程序员的需要自动增加数组的大小?