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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_cidrfield-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94e7968fb0977eb206f5eca03ffcd09b579ffca2b89aa574d590e247444f9971 |
|
MD5 | e0a6f4333b7d9cc9caa6e0936686525e |
|
BLAKE2b-256 | dfb8e909ea3808b7e5dd3a28a5497cb18d31f46bfaedacdd2e1c4db002b3b20a |