1

django 获取CharField字段为unicode,而有时str是必需的。编写循环遍历字段、检查类型以及是否将其unicode强制转换为str.

是否已经有可以处理它的功能?
如果不是,最优雅的处理方式是什么?

4

1 回答 1

1

您可以继承 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 的自省规则

于 2013-07-25T19:43:32.313 回答