获取 Django 模型对象后进行数据转换
Do data conversion after Django model object is fetched
我想将 Django 模型中的 python 字典保存为 JSON 并且我想在数据为 python 时将其转换回 python 字典已提取。
我知道我可以在视图中完成,但我想在模型中实现它,以便在查询时它可以 return 字典对象。
是否有任何信号或任何 post_fetch 方法可用于实现它,我无法通过谷歌搜索找到任何内容...
你可能想简单地使用 Python JSON 包,除非你使用 Postgres 作为你的数据库 - 在这种情况下 JSONField is the way to go. The json package is explained here 你可以在一个如果我明白你在说什么,请像这样建模:
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)
或通过调用MyModelObject.set_json_field(myDictionary)
将Python字典转换为[=]将字典转换为JSON 33=] 然后存入模型的 json_field
中。要将 JSON 数据作为字典检索,您只需调用 MyModel.objects.last().get_json_field_as_dictionary
(或任何您喜欢的称呼,json_dictionary
可能是 MyModel.objects.last().json_dictionary
),它会 return 那个 属性 的值就好像它是模型中的一个元素一样,而不必每次都进行转换。
或者,如果您使用 Postgres 作为后端,使用 JSONField:
会容易得多
class MyModel(models.Model):
json_field = models.JSONField(null=True)
并保存:
myObject = myModel.objects.create(json_field=myDictionary)
如果你澄清我可以更新我的答案以更好地解释。
您可能想要使用 JSONField。它允许存储编码为 JSON 的数据并将它们检索为相应的 Python 数据类型,包括字典。
JSONField 仅适用于 Django < 3.1
的 PostgreSQL,但适用于 Django >= 3.1
.
的任何数据库
我想将 Django 模型中的 python 字典保存为 JSON 并且我想在数据为 python 时将其转换回 python 字典已提取。
我知道我可以在视图中完成,但我想在模型中实现它,以便在查询时它可以 return 字典对象。
是否有任何信号或任何 post_fetch 方法可用于实现它,我无法通过谷歌搜索找到任何内容...
你可能想简单地使用 Python JSON 包,除非你使用 Postgres 作为你的数据库 - 在这种情况下 JSONField is the way to go. The json package is explained here 你可以在一个如果我明白你在说什么,请像这样建模:
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)
或通过调用MyModelObject.set_json_field(myDictionary)
将Python字典转换为[=]将字典转换为JSON 33=] 然后存入模型的 json_field
中。要将 JSON 数据作为字典检索,您只需调用 MyModel.objects.last().get_json_field_as_dictionary
(或任何您喜欢的称呼,json_dictionary
可能是 MyModel.objects.last().json_dictionary
),它会 return 那个 属性 的值就好像它是模型中的一个元素一样,而不必每次都进行转换。
或者,如果您使用 Postgres 作为后端,使用 JSONField:
会容易得多class MyModel(models.Model):
json_field = models.JSONField(null=True)
并保存:
myObject = myModel.objects.create(json_field=myDictionary)
如果你澄清我可以更新我的答案以更好地解释。
您可能想要使用 JSONField。它允许存储编码为 JSON 的数据并将它们检索为相应的 Python 数据类型,包括字典。
JSONField 仅适用于 Django < 3.1
的 PostgreSQL,但适用于 Django >= 3.1
.