我有一个包含编码问题的旧数据库。我不能在没有破坏很多东西的情况下修复它
但是我还是想在我身边的django应用程序(django 1.2)中处理它
我认为继承CharField会是一个很棒的主意,所以我做了:
class EncCharField(models.CharField):
__metaclass__ = SubfieldBase
def to_python(self, value):
v = super(EncCharField, self).to_python(value)
return v.encode('windows-1252').decode('windows-1251')
最新我虽然有效,但后来又遇到了另一个问题
我在ModelForm
和form.save
中使用此模型,当它从表单实例创建模型实例时,再次调用EncCharField.to_python
,但这次正确编码value
,所以我的编码解码会抛出一个异常并且所有死掉
因此。有没有办法区分从DB与Form(或其他有效的对象)初始化模型时的情况?
第二个问题,如何在保存到数据库之前重新编码(encode('windows-1251').decode('windows-1252')
)?