Test para in
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
from __future__ import unicode_literals
|
||||||
import datetime
|
import datetime
|
||||||
import copy
|
import copy
|
||||||
|
|
||||||
@@ -100,7 +101,7 @@ class Q(QMixin):
|
|||||||
|
|
||||||
def _get_value(self, value):
|
def _get_value(self, value):
|
||||||
if isinstance(value, int) or isinstance(value, float):
|
if isinstance(value, int) or isinstance(value, float):
|
||||||
return str(value)
|
return unicode(value)
|
||||||
|
|
||||||
if isinstance(value, datetime.datetime):
|
if isinstance(value, datetime.datetime):
|
||||||
return "'%s'" % value.strftime("%Y-%m-%d %H:%M:%S")
|
return "'%s'" % value.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
@@ -111,8 +112,8 @@ class Q(QMixin):
|
|||||||
if isinstance(value, list) or isinstance(value, set):
|
if isinstance(value, list) or isinstance(value, set):
|
||||||
return ", ".join([self._get_value(item) for item in value])
|
return ", ".join([self._get_value(item) for item in value])
|
||||||
|
|
||||||
if isinstance(value, F):
|
if isinstance(value, F) or isinstance(value, QMixin) or isinstance(value, SQLQuery):
|
||||||
return value
|
return unicode(value)
|
||||||
|
|
||||||
return "'%s'" % value
|
return "'%s'" % value
|
||||||
|
|
||||||
@@ -212,7 +213,7 @@ class SQLQuery(object):
|
|||||||
clone._order_by = args
|
clone._order_by = args
|
||||||
return clone
|
return clone
|
||||||
|
|
||||||
def group_by(clone, *args):
|
def group_by(self, *args):
|
||||||
clone = self._clone()
|
clone = self._clone()
|
||||||
clone._group_by = args
|
clone._group_by = args
|
||||||
return clone
|
return clone
|
||||||
@@ -253,7 +254,7 @@ class SQLCompiler(object):
|
|||||||
def get_where(self):
|
def get_where(self):
|
||||||
filters = self._filters & ~self._excludes
|
filters = self._filters & ~self._excludes
|
||||||
if filters:
|
if filters:
|
||||||
return "WHERE " + str(filters)
|
return "WHERE " + unicode(filters)
|
||||||
|
|
||||||
def get_order_by(self,):
|
def get_order_by(self,):
|
||||||
conds = []
|
conds = []
|
||||||
|
|||||||
@@ -68,10 +68,16 @@ class TestSqlBuilder(unittest.TestCase):
|
|||||||
str(sql), "SELECT * FROM users WHERE (name in ('jose', 'andres'))")
|
str(sql), "SELECT * FROM users WHERE (name in ('jose', 'andres'))")
|
||||||
|
|
||||||
sql = Queryset("users")
|
sql = Queryset("users")
|
||||||
sql = sql.filter(year__in=[2012, 2014, "jose"])
|
sql = sql.filter(year__in=[2012, 2014, u"José"])
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
str(sql), "SELECT * FROM users WHERE (year in (2012, 2014, 'jose'))")
|
unicode(sql), u"SELECT * FROM users WHERE (year in (2012, 2014, 'José'))")
|
||||||
|
|
||||||
|
user = Queryset("users").filter(id=100).values("id")
|
||||||
|
self.assertEqual(str(user), "SELECT id FROM users WHERE (id=100)")
|
||||||
|
|
||||||
|
invoices = Queryset("invoices").filter(user_id__in=user)
|
||||||
|
self.assertEqual(
|
||||||
|
str(invoices), "SELECT * FROM invoices WHERE (user_id in (SELECT id FROM users WHERE (id=100)))")
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|||||||
Reference in New Issue
Block a user