我试图在Django中创建一个将python词典存储为json的字段。
当我这样做的时候:
class DictionaryField(models.TextField):
def get_db_prep_value(self, value, connection, prepared=False):
return json.dumps(value)
def to_python(self, value):
return json.loads(value)
从数据库中检索到它时,不会调用to_python。我最终只得到一个字符串。
当我这样做的时候:
class DictionaryField(models.TextField):
__metaclass__ = models.SubfieldBase
def get_db_prep_value(self, value, connection, prepared=False):
return json.dumps(value)
def to_python(self, value):
return json.loads(value)
调用to_python!我最终得到了一个python对象。但是如果我删除已保存在数据库中的模型并尝试重新创建它们,它们最终会变为无!不知怎的,get_db_prep_value停止工作,只返回None或者什么。
我做错了什么?
编辑:
如果我打印输入的'值'传递给get_db_prep_value,然后传递给
__metaclass__ = models.SubfieldBase
存在,'价值'只是没有。没有它,它就是我想要的价值。