Versión 0.0.6
This commit is contained in:
@@ -2,7 +2,7 @@ from __future__ import unicode_literals
|
|||||||
import datetime
|
import datetime
|
||||||
import copy
|
import copy
|
||||||
|
|
||||||
VERSION = "0.0.5"
|
VERSION = "0.0.6"
|
||||||
|
|
||||||
|
|
||||||
class classproperty(object):
|
class classproperty(object):
|
||||||
@@ -78,6 +78,7 @@ class F(object):
|
|||||||
class Q(QMixin):
|
class Q(QMixin):
|
||||||
lookup_types = [
|
lookup_types = [
|
||||||
'icontains', 'istartswith', 'iendswith',
|
'icontains', 'istartswith', 'iendswith',
|
||||||
|
'contains', 'startswith', 'endswith',
|
||||||
'year', 'month', 'day', 'week_day', 'hour', 'minute', 'second',
|
'year', 'month', 'day', 'week_day', 'hour', 'minute', 'second',
|
||||||
'isnull', 'in']
|
'isnull', 'in']
|
||||||
|
|
||||||
@@ -127,13 +128,22 @@ class Q(QMixin):
|
|||||||
|
|
||||||
if lookup in self.lookup_types:
|
if lookup in self.lookup_types:
|
||||||
if lookup == "icontains":
|
if lookup == "icontains":
|
||||||
return "{0} like '%{1}%'".format(column, value)
|
return "{0} LIKE '%{1}%'".format(column, value)
|
||||||
|
|
||||||
if lookup == "iendswith":
|
if lookup == "iendswith":
|
||||||
return "{0} like '%{1}'".format(column, value)
|
return "{0} LIKE '%{1}'".format(column, value)
|
||||||
|
|
||||||
if lookup == "istartwith":
|
if lookup == "istartswith":
|
||||||
return "{0} like '{1}%'".format(column, value)
|
return "{0} LIKE '{1}%'".format(column, value)
|
||||||
|
|
||||||
|
if lookup == "contains":
|
||||||
|
return "{0} LIKE BINARY '%{1}%'".format(column, value)
|
||||||
|
|
||||||
|
if lookup == "endswith":
|
||||||
|
return "{0} LIKE BINARY '%{1}'".format(column, value)
|
||||||
|
|
||||||
|
if lookup == "startswith":
|
||||||
|
return "{0} LIKE BINARY '{1}%'".format(column, value)
|
||||||
|
|
||||||
if lookup == "in":
|
if lookup == "in":
|
||||||
return "{0} in ({1})".format(column, self._get_value(value))
|
return "{0} in ({1})".format(column, self._get_value(value))
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import unittest
|
import unittest
|
||||||
import datetime
|
import datetime
|
||||||
from . import Q, Queryset, F
|
from sqlquerybuilder import Q, Queryset, F
|
||||||
|
|
||||||
|
|
||||||
class TestSqlBuilder(unittest.TestCase):
|
class TestSqlBuilder(unittest.TestCase):
|
||||||
@@ -12,6 +12,15 @@ class TestSqlBuilder(unittest.TestCase):
|
|||||||
self.assertEqual(str(Q(a__isnull=True)), "(a is NULL)")
|
self.assertEqual(str(Q(a__isnull=True)), "(a is NULL)")
|
||||||
self.assertEqual(str(Q(a__isnull=False)), "(a is NOT NULL)")
|
self.assertEqual(str(Q(a__isnull=False)), "(a is NOT NULL)")
|
||||||
|
|
||||||
|
self.assertEqual(str(Q(a__startswith="a")), "(a LIKE BINARY 'a%')")
|
||||||
|
self.assertEqual(str(Q(a__istartswith="a")), "(a LIKE 'a%')")
|
||||||
|
|
||||||
|
self.assertEqual(str(Q(a__endswith="a")), "(a LIKE BINARY '%a')")
|
||||||
|
self.assertEqual(str(Q(a__iendswith="a")), "(a LIKE '%a')")
|
||||||
|
|
||||||
|
self.assertEqual(str(Q(a__contains="a")), "(a LIKE BINARY '%a%')")
|
||||||
|
self.assertEqual(str(Q(a__icontains="a")), "(a LIKE '%a%')")
|
||||||
|
|
||||||
def test_dates(self):
|
def test_dates(self):
|
||||||
date = datetime.date(2010, 1, 15)
|
date = datetime.date(2010, 1, 15)
|
||||||
self.assertEqual(str(Q(fecha=date)), "(fecha='2010-01-15')")
|
self.assertEqual(str(Q(fecha=date)), "(fecha='2010-01-15')")
|
||||||
|
|||||||
Reference in New Issue
Block a user