Loading AUTHORS +1 −0 Original line number Diff line number Diff line Loading @@ -270,6 +270,7 @@ answer newbie questions, and generally made Django that much better: Brian Harring <ferringb@gmail.com> Brant Harris Ronny Haryanto <http://ronny.haryan.to/> Axel Haustant <noirbizarre@gmail.com> Hawkeye Kent Hauser <kent@khauser.net> Joe Heck <http://www.rhonabwy.com/wp/> Loading django/db/backends/sqlite3/base.py +1 −1 Original line number Diff line number Diff line Loading @@ -519,4 +519,4 @@ def _sqlite_format_dtdelta(dt, conn, days, secs, usecs): return str(dt) def _sqlite_regexp(re_pattern, re_string): return bool(re.search(re_pattern, re_string)) return bool(re.search(re_pattern, str(re_string))) if re_string is not None else False tests/lookup/models.py +9 −0 Original line number Diff line number Diff line Loading @@ -57,3 +57,12 @@ class Player(models.Model): def __str__(self): return self.name @python_2_unicode_compatible class RegexTestModel(models.Model): name = models.CharField(max_length=100, null=True) integer = models.IntegerField(null=True) def __str__(self): return self.name tests/lookup/tests.py +16 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ from operator import attrgetter from django.core.exceptions import FieldError from django.test import TestCase, skipUnlessDBFeature from .models import Author, Article, Tag, Game, Season, Player from .models import Author, Article, Tag, Game, Season, Player, RegexTestModel class LookupTests(TestCase): Loading Loading @@ -610,6 +610,21 @@ class LookupTests(TestCase): self.assertQuerysetEqual(Article.objects.filter(headline__regex=r'b(.).*b\1'), ['<Article: barfoobaz>', '<Article: bazbaRFOO>', '<Article: foobarbaz>']) def test_regex_null(self): """ Ensure that a regex lookup does not fail on null/None values """ RegexTestModel.objects.create(name=None) self.assertQuerysetEqual(RegexTestModel.objects.filter(name__regex=r'^$'), []) def test_regex_non_string(self): """ Ensure that a regex lookup does not fail on non-string fields """ RegexTestModel.objects.create(name='test', integer=5) self.assertQuerysetEqual(RegexTestModel.objects.filter(integer__regex=r'^5$'), ['<RegexTestModel: test>']) def test_nonfield_lookups(self): """ Ensure that a lookup query containing non-fields raises the proper Loading Loading
AUTHORS +1 −0 Original line number Diff line number Diff line Loading @@ -270,6 +270,7 @@ answer newbie questions, and generally made Django that much better: Brian Harring <ferringb@gmail.com> Brant Harris Ronny Haryanto <http://ronny.haryan.to/> Axel Haustant <noirbizarre@gmail.com> Hawkeye Kent Hauser <kent@khauser.net> Joe Heck <http://www.rhonabwy.com/wp/> Loading
django/db/backends/sqlite3/base.py +1 −1 Original line number Diff line number Diff line Loading @@ -519,4 +519,4 @@ def _sqlite_format_dtdelta(dt, conn, days, secs, usecs): return str(dt) def _sqlite_regexp(re_pattern, re_string): return bool(re.search(re_pattern, re_string)) return bool(re.search(re_pattern, str(re_string))) if re_string is not None else False
tests/lookup/models.py +9 −0 Original line number Diff line number Diff line Loading @@ -57,3 +57,12 @@ class Player(models.Model): def __str__(self): return self.name @python_2_unicode_compatible class RegexTestModel(models.Model): name = models.CharField(max_length=100, null=True) integer = models.IntegerField(null=True) def __str__(self): return self.name
tests/lookup/tests.py +16 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ from operator import attrgetter from django.core.exceptions import FieldError from django.test import TestCase, skipUnlessDBFeature from .models import Author, Article, Tag, Game, Season, Player from .models import Author, Article, Tag, Game, Season, Player, RegexTestModel class LookupTests(TestCase): Loading Loading @@ -610,6 +610,21 @@ class LookupTests(TestCase): self.assertQuerysetEqual(Article.objects.filter(headline__regex=r'b(.).*b\1'), ['<Article: barfoobaz>', '<Article: bazbaRFOO>', '<Article: foobarbaz>']) def test_regex_null(self): """ Ensure that a regex lookup does not fail on null/None values """ RegexTestModel.objects.create(name=None) self.assertQuerysetEqual(RegexTestModel.objects.filter(name__regex=r'^$'), []) def test_regex_non_string(self): """ Ensure that a regex lookup does not fail on non-string fields """ RegexTestModel.objects.create(name='test', integer=5) self.assertQuerysetEqual(RegexTestModel.objects.filter(integer__regex=r'^5$'), ['<RegexTestModel: test>']) def test_nonfield_lookups(self): """ Ensure that a lookup query containing non-fields raises the proper Loading