django 获取CharField
字段为unicode
,而有时str
是必需的。编写循环遍历字段、检查类型以及是否将其unicode
强制转换为str
.
是否已经有可以处理它的功能?
如果不是,最优雅的处理方式是什么?
您可以继承 models.CharField 类并覆盖 to_python 方法:
from django.utils.encoding import smart_str
from django.db.models import CharField
class ByteStringField(CharField):
def to_python(self, value):
if isinstance(value, str) or value is None:
return value
return smart_str(value)
smart_str 等效于通常在 CharFields 中使用的 smart_unicode 函数的字节串。
编辑:正如乔纳森所说,如果您使用 South,请记住扩展 South 的自省规则。