The smart_text() and force_text() aliases (since Django 2.0) of smart_str() and force_str() are deprecated

This commit is contained in:
trhr 2020-02-09 19:54:20 -06:00
parent ad8b1d81d5
commit ce95961663

View file

@ -43,7 +43,7 @@ from django.forms.fields import CharField
from django.forms.widgets import Textarea from django.forms.widgets import Textarea
from pickle import loads, dumps from pickle import loads, dumps
from django.utils.encoding import force_text from django.utils.encoding import force_str
DEFAULT_PROTOCOL = 4 DEFAULT_PROTOCOL = 4
@ -210,10 +210,10 @@ class PickledObjectField(models.Field):
""" """
Returns the default value for this field. Returns the default value for this field.
The default implementation on models.Field calls force_text The default implementation on models.Field calls force_str
on the default, which means you can't set arbitrary Python on the default, which means you can't set arbitrary Python
objects as the default. To fix this, we just return the value objects as the default. To fix this, we just return the value
without calling force_text on it. Note that if you set a without calling force_str on it. Note that if you set a
callable as a default, the field will still call it. It will callable as a default, the field will still call it. It will
*not* try to pickle and encode it. *not* try to pickle and encode it.
@ -267,13 +267,13 @@ class PickledObjectField(models.Field):
""" """
if value is not None and not isinstance(value, PickledObject): if value is not None and not isinstance(value, PickledObject):
# We call force_text here explicitly, so that the encoded string # We call force_str here explicitly, so that the encoded string
# isn't rejected by the postgresql_psycopg2 backend. Alternatively, # isn't rejected by the postgresql_psycopg2 backend. Alternatively,
# we could have just registered PickledObject with the psycopg # we could have just registered PickledObject with the psycopg
# marshaller (telling it to store it like it would a string), but # marshaller (telling it to store it like it would a string), but
# since both of these methods result in the same value being stored, # since both of these methods result in the same value being stored,
# doing things this way is much easier. # doing things this way is much easier.
value = force_text(dbsafe_encode(value, self.compress, self.protocol)) value = force_str(dbsafe_encode(value, self.compress, self.protocol))
return value return value
def value_to_string(self, obj): def value_to_string(self, obj):