diff --git a/setup.cfg b/setup.cfg index 7628575..e18ff62 100644 --- a/setup.cfg +++ b/setup.cfg @@ -2,4 +2,4 @@ universal = 1 [flake8] -max-line-length = 119 +max-line-length = 135 diff --git a/setup.py b/setup.py index a0ee49c..58a0a62 100755 --- a/setup.py +++ b/setup.py @@ -70,7 +70,7 @@ def run_tests(self): setup( name='django-livefield', - version='2.6.0', + version='2.7.0', description='Convenient soft-deletion support for Django models', long_description=( open('README.rst').read() + '\n\n' + diff --git a/src/livefield/fields.py b/src/livefield/fields.py index 54ea50a..903c4fb 100644 --- a/src/livefield/fields.py +++ b/src/livefield/fields.py @@ -1,3 +1,4 @@ +import django from django.db import models @@ -36,6 +37,19 @@ def get_prep_lookup(self, lookup_type, value): return super(LiveField, self).get_prep_lookup(lookup_type, value) +class LiveFieldExact(models.lookups.Exact): + def get_db_prep_lookup(self, value, connection): + if not value: + msg = u"LiveField doesn't support filters or excludes with a livefield=False. Try using livefield=None." + raise TypeError(msg) # pylint: disable=no-member + return super(LiveFieldExact, self).get_db_prep_lookup(value, connection) # pylint: disable=too-many-function-args + + +# Only do this for Django >= 1.10 +if django.get_version().startswith("1.1"): + LiveField.register_lookup(LiveFieldExact) + + try: from south.modelsinspector import add_introspection_rules add_introspection_rules([], ['^livefield.LiveField'])