Skip to main content

Proper CIDR fields for Django running on any database

Project description

cidrfield provides a model field for django that allows the storage of an ip network on the db side by using ipaddress to handle conversion to an ipaddress.ip_network instance (or None) on the python side. It supports the use of __contains and __in to query the IP network that contain and belong to.

Installation

Add this to your django project by installing with pip:

pip install django-cidrfield

Usage

In your models, do something like the following:

from django.db import models
from cidrfield.models import IPNetworkField

class MyModel(models.Model):

    # the regular params should work well enough here
    ip_network = IPNetworkField()
    # ... and so on

Then you can store a ip network like the following:

MyModel(ip_network='192.168.1.0/24').save()

And you can query a ip network like the following:

MyModel.objects.filter(ip_network='192.168.1.0/24')
MyModel.objects.filter(ip_network__contains='192.168.1.1')
MyModel.objects.filter(ip_network__in='192.168.0.0/16')
MyModel.objects.filter(ip_network__in=['192.168.0.0/16', '10.10.0.0/16'])

If you use DjangoQL, you can use CIDRQLSchema like the following:

from django.contrib import admin
from djangoql.admin import DjangoQLSearchMixin
from cidrfield.schemas import CIDRQLSchema
from .models import MyModel


@admin.register(MyModel)
class MyModelAdmin(DjangoQLSearchMixin, admin.ModelAdmin):
    list_display = ['ip_network']
    search_fields = ('ip_network', )
    djangoql_schema = CIDRQLSchema

Changelog

0.2.0

  • Add support for Djangoql.

  • Fixed the bug about __in query not supporting array.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-cidrfield-0.2.0.tar.gz (4.1 kB view details)

Uploaded Source

Built Distribution

django_cidrfield-0.2.0-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file django-cidrfield-0.2.0.tar.gz.

File metadata

  • Download URL: django-cidrfield-0.2.0.tar.gz
  • Upload date:
  • Size: 4.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.6.0

File hashes

Hashes for django-cidrfield-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d367abca917c26f6e3f7008bfe50dc7d664644c7457dad1253b9497cb760fb83
MD5 fa4b7fda01dc9627fe87cec3c8d9187f
BLAKE2b-256 414b3fe740fd379c830ef23e1489ba43c3b89d26cfddc08551c9124567222d92

See more details on using hashes here.

File details

Details for the file django_cidrfield-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: django_cidrfield-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.6.0

File hashes

Hashes for django_cidrfield-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 94e7968fb0977eb206f5eca03ffcd09b579ffca2b89aa574d590e247444f9971
MD5 e0a6f4333b7d9cc9caa6e0936686525e
BLAKE2b-256 dfb8e909ea3808b7e5dd3a28a5497cb18d31f46bfaedacdd2e1c4db002b3b20a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page