django - 获取Django模型对象后进行数据转换
问题描述
我想将 Django 模型中的 python 字典保存为 JSON,并且我想在获取该数据时将该 JSON 转换回 python 字典。
我知道我可以在视图中做到这一点,但我想在模型中实现它,这样它就可以在查询时返回字典对象。
是否有任何信号或任何 post_fetch 方法可以用来实现它,我找不到任何谷歌搜索...
解决方案
您可能想简单地使用 Python JSON 包,除非您使用 Postgres 作为数据库 - 在这种情况下JSONField是要走的路。这里解释了json 包,如果我理解你在说什么,你可以在这样的模型中使用它:
import json
class MyModel(models.Model):
json_field = models.TextField() # or you can use JSONField if using Postgres
@property
def get_json_field_as_dictionary(self):
return json.loads(self.json_field)
def set_json_field(self, mydict):
self.json_field = json.dumps(mydict)
@classmethod
def get_json_from_dictionary(cls, mydict):
return json.dumps(mydict)
当您保存到数据库时,您可以使用json.dumps(myDictionary)
字典或将字典转换为 JSON,方法是调用MyModelObject.set_json_field(myDictionary)
将 Python 字典转换为 JSON,然后将其存储在json_field
模型中。要将 JSON 数据作为字典检索,您只需调用MyModel.objects.last().get_json_field_as_dictionary
(或任何您喜欢调用它的名称,json_dictionary
可能会这样MyModel.objects.last().json_dictionary
),它将返回该属性的值,就好像它是模型中的一个元素一样,而无需执行每次转换。
或者,如果您使用 Postgres 作为后端,使用JSONField会容易得多:
class MyModel(models.Model):
json_field = models.JSONField(null=True)
并保存:
myObject = myModel.objects.create(json_field=myDictionary)
如果您澄清,我可以更新我的答案以更好地解释。
推荐阅读
- java - 获取动画JAVA后整数的值
- angular - 无法使用角度发送图像文件
- wordpress - WordPress is_search() 函数总是假的
- vb.net - 动态分配 Form 对象
- java - 如何检查矩形和 TextureRegion LibGDX 之间的交集?
- c# - 使用正则表达式删除 \u 字符不起作用
- android - MediaManager.addCompletionHandler 在 Android 上不起作用
- c++ - 如何在 Jasper JPEG2000 中指定小端
- javascript - 更改事件的输入不适用于 Farbtastic 颜色选择器
- python - Python PyQt 改变组合框的布局