将django模型字符串字段取为str而不是unicode

时间:2013-07-25 19:19:19

标签: python django string unicode

django将CharField字段提取为unicode,而有时需要str。编写循环遍历字段的代码,检查类型以及unicode是否将其强制转换为str是低效且乏味的。

是否已有可以处理它的功能?
如果不是最优雅的方式来处理这个问题?

1 个答案:

答案 0 :(得分: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函数的字节串。

编辑:正如乔纳森所说,如果你使用南方,请记得extend south's introspection rules