Metadata-Version: 2.1
Name: django-bitfield
Version: 1.9.6
Summary: BitField in Django
Home-page: https://github.com/disqus/django-bitfield
Author: Disqus
Author-email: opensource@disqus.com
License: UNKNOWN
Description: django-bitfield
        ---------------
        
        .. image:: https://api.travis-ci.org/disqus/django-bitfield.png?branch=master
            :target: https://travis-ci.org/disqus/django-bitfield
        
        Provides a BitField like class (using a BigIntegerField) for your Django models.
        
        (If you're upgrading from a version before 1.2 the API has changed greatly and is backwards incompatible!)
        
        Requirements
        ============
        
        * Django >= 1.4
        * PostgreSQL (see notes)
        
        **Notes:**
        
        - SQLite does not support save operations using a ``Bit`` (per the example under Usage).
        - MySQL fails on most queries related to BitField's.
        
        Installation
        ============
        
        Install it with pip (or easy_install)::
        
        	pip install django-bitfield
        
        Usage
        =====
        
        First you'll need to attach a BitField to your class. This acts as a BigIntegerField (BIGINT) in your database::
        
        	from bitfield import BitField
        
        	class MyModel(models.Model):
        	    flags = BitField(flags=(
        	        'awesome_flag',
        	        'flaggy_foo',
        	        'baz_bar',
        	    ))
        
        Flags can also be defined with labels::
        
        	class MyModel(models.Model):
        	    flags = BitField(flags=(
        	        ('awesome_flag', 'Awesome Flag!'),
        	        ('flaggy_foo', 'Flaggy Foo'),
        	        ('baz_bar', 'Baz (bar)'),
        	    ))
        
        Now you can use the field using very familiar Django operations::
        
        	# Create the model
        	o = MyModel.objects.create(flags=0)
        
        	# Add awesome_flag (does not work in SQLite)
        	MyModel.objects.filter(pk=o.pk).update(flags=F('flags').bitor(MyModel.flags.awesome_flag))
        
        	# Set flags manually to [awesome_flag, flaggy_foo]
        	MyModel.objects.filter(pk=o.pk).update(flags=MyModel.flags.awesome_flag | MyModel.flags.flaggy_foo)
        
        	# Remove awesome_flag (does not work in SQLite)
        	MyModel.objects.filter(pk=o.pk).update(flags=F('flags').bitand(~MyModel.flags.awesome_flag))
        
        	# Find by awesome_flag
        	MyModel.objects.filter(flags=MyModel.flags.awesome_flag)
        
        	# Exclude by awesome_flag
        	MyModel.objects.filter(flags=~MyModel.flags.awesome_flag)
        
        	# Test awesome_flag
        	if o.flags.awesome_flag:
        	    print "Happy times!"
        
        	# List all flags on the field
        	for f in o.flags:
        	    print f
        
        	# Get a flag label
        	print o.flags.get_label('awesome_flag')
        
        Enjoy!
        
        Admin
        =====
        
        To use the widget in the admin, you'll need to update your ModelAdmin. Add the
        following lines to your ModelAdmin::
        
        	formfield_overrides = {
        		BitField: {'widget': BitFieldCheckboxSelectMultiple},
        	}
        
        Make sure you've imported the classes by adding these lines to the top of the file::
        
        	from bitfield import BitField
        	from bitfield.forms import BitFieldCheckboxSelectMultiple
        
        There is also a ``BitFieldListFilter`` list filter (Django 1.4 or newer).
        To use it set ``list_filter`` ModelAdmin option::
        
            list_filter = (
                    ('flags', BitFieldListFilter,)
                    )
        
        BitFieldListFilter is in ``bitfield.admin`` module::
        
            from bitfield.admin import BitFieldListFilter
        
Platform: UNKNOWN
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Description-Content-Type: text/x-rst
Provides-Extra: tests
