Fixed #10238: coerce TextField values to unicode in the oracle backend.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10049 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
f725658299
commit
0ae95f80b4
|
@ -6,6 +6,7 @@ Derives from: django.db.models.sql.query.Query
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from django.db.backends import util
|
from django.db.backends import util
|
||||||
|
from django.utils.encoding import force_unicode
|
||||||
|
|
||||||
# Cache. Maps default query class to new Oracle query class.
|
# Cache. Maps default query class to new Oracle query class.
|
||||||
_classes = {}
|
_classes = {}
|
||||||
|
@ -55,6 +56,9 @@ def query_class(QueryClass, Database):
|
||||||
def convert_values(self, value, field):
|
def convert_values(self, value, field):
|
||||||
if isinstance(value, Database.LOB):
|
if isinstance(value, Database.LOB):
|
||||||
value = value.read()
|
value = value.read()
|
||||||
|
if field and field.get_internal_type() == 'TextField':
|
||||||
|
value = force_unicode(value)
|
||||||
|
|
||||||
# Oracle stores empty strings as null. We need to undo this in
|
# Oracle stores empty strings as null. We need to undo this in
|
||||||
# order to adhere to the Django convention of using the empty
|
# order to adhere to the Django convention of using the empty
|
||||||
# string instead of null, but only if the field accepts the
|
# string instead of null, but only if the field accepts the
|
||||||
|
|
|
@ -13,6 +13,7 @@ class Donut(models.Model):
|
||||||
baked_date = models.DateField(null=True)
|
baked_date = models.DateField(null=True)
|
||||||
baked_time = models.TimeField(null=True)
|
baked_time = models.TimeField(null=True)
|
||||||
consumed_at = models.DateTimeField(null=True)
|
consumed_at = models.DateTimeField(null=True)
|
||||||
|
review = models.TextField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ('consumed_at',)
|
ordering = ('consumed_at',)
|
||||||
|
@ -82,6 +83,12 @@ datetime.datetime(2007, 4, 20, 16, 19, 59)
|
||||||
>>> Donut.objects.filter(consumed_at__year=2008)
|
>>> Donut.objects.filter(consumed_at__year=2008)
|
||||||
[]
|
[]
|
||||||
|
|
||||||
|
# Regression test for #10238: TextField values returned from the database
|
||||||
|
# should be unicode.
|
||||||
|
>>> d2 = Donut.objects.create(name=u'Jelly Donut', review=u'Outstanding')
|
||||||
|
>>> Donut.objects.get(id=d2.id).review
|
||||||
|
u'Outstanding'
|
||||||
|
|
||||||
"""}
|
"""}
|
||||||
|
|
||||||
# Regression test for #8354: the MySQL backend should raise an error if given
|
# Regression test for #8354: the MySQL backend should raise an error if given
|
||||||
|
|
Loading…
Reference in New Issue