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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d367abca917c26f6e3f7008bfe50dc7d664644c7457dad1253b9497cb760fb83
|
|
| MD5 |
fa4b7fda01dc9627fe87cec3c8d9187f
|
|
| BLAKE2b-256 |
414b3fe740fd379c830ef23e1489ba43c3b89d26cfddc08551c9124567222d92
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94e7968fb0977eb206f5eca03ffcd09b579ffca2b89aa574d590e247444f9971
|
|
| MD5 |
e0a6f4333b7d9cc9caa6e0936686525e
|
|
| BLAKE2b-256 |
dfb8e909ea3808b7e5dd3a28a5497cb18d31f46bfaedacdd2e1c4db002b3b20a
|