Test para in

This commit is contained in:
2014-11-26 10:32:51 +01:00
parent d920c773d3
commit f202bb8915
2 changed files with 14 additions and 7 deletions

View File

@@ -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 = []

View File

@@ -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()