Commits

Owen Nelson committed 3ed59b5

have some readme

Comments (0)

Files changed (1)

+.. -*- restructuredtext -*-
+
+django-ipyfield
+===============
+
+``ipyfield`` provides a model field for 
+`django <https://www.djangoproject.com>`_
+that allows the storage of an ip address as a ``BigInt`` on the db side by 
+using `IPy <http://pypi.python.org/pypi/IPy/>`_ to handel 
+conversion to an ``IPy.IP`` instance (or ``None``) on the python side. 
+
+Wut?
+----
+
+In its way, it gives us a way to store both **ipv4** and **ipv6** consistently
+without having to throw them in long charfields. Also, it gives us an easy way
+to validate data as it comes in, while giving us access to additional meta
+information (basically everything that makes 
+`IPy <http://pypi.python.org/pypi/IPy/>`_ so awesome).
+
+
+Installation
+------------
+
+Add this to your django project by installing with ``pip``: ::
+    
+    pip install django-ipyfield
+
+or with ``easy_install``: ::
+
+    easy_install django-ipyfield
+
+
+
+Usage
+-----
+
+In your models, do something like the fallowing: ::
+    
+    from django.db import models
+    from ipyfield import IPyField
+
+    class MyModel(models.Model):
+
+        # the regular params should work well enough here
+        ipaddr = IPyField()
+        # ... and so on
+
+
+From here, any assignments to ``obj.ipaddr`` can be considered a constructor
+argument to a new ``IPy.IP`` instance. Anything ``IP()`` can use to make a new
+object can be used.
+
+When making queries, I added one extra piece of syntactical sugar. For 
+``__in`` (range) lookups, you can pass a **CIDR** notation address range, for 
+eaxample: ::
+    
+    MyModel.objects.filter(ipaddr__in='10.0.0.0/24')
+
+Currently you need to use this form of notation supported for this kind of 
+query. For now, if you need to use a ``prefix-netmask`` style notation, pass it 
+to ``IPy.IP`` yourself and use the resulting instance as your filter parameter.
+
+