django将CharField
字段提取为unicode
,而有时需要str
。编写循环遍历字段的代码,检查类型以及unicode
是否将其强制转换为str
是低效且乏味的。
是否已有可以处理它的功能?
如果不是最优雅的方式来处理这个问题?
答案 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。