django jsonfield保存到数据库

时间:2013-08-21 08:17:03

标签: python database django json

我有一个使用JsonField字段的Django模型。

在某些时候,我使用IP地址更新字段,并保存该字段:

class Agent(models.Model):
    properties = jsonfield.JSONField(default = {})

def save_ip_address(self, ip_address):
    self.properties['ip'] = ip_address
    self.save()

看起来非常直接..不是吗?

但是这个字段没有用ip字典项保存......我不明白为什么!

我做了一个可行的解决方法,但在我的代码中效果不佳:

d = self.properties
d['ip'] = ip_address
self.properties = d 
self.save()

这样,JsonField确实用IP地址保存在数据库中。

有谁知道为什么第一种方法不起作用?我应该怎么做才能解决它?

谢谢!

1 个答案:

答案 0 :(得分:1)

当我尝试时,你的例子对我来说效果很好。你能详细说明你的意思是什么没被保存?澄清我在控制台测试。用你的模型创建了一个应用程序,打开django控制台并运行:

>>> from test_app.models import Agent
>>> a = Agent()
>>> a.properties = {"host": "test"}
>>> a.save()
>>> a.properties
{'host': 'test'}
>>> a.save_ip_address("127.0.0.1")
>>> a.properties
{'ip': '127.0.0.1', 'host': 'test'}

您可以重新创建相同效果的步骤吗?如果是这样,bug就会出现在代码的其他地方。