【发布时间】:2016-05-30 17:27:23
【问题描述】:
我最近更新到 Django 1.9 并尝试更新我的一些模型字段以使用内置 JSONField(我使用的是 PostgreSQL 9.4.5)。当我试图创建和更新对象的字段时,我遇到了一些奇怪的东西。这是我的模型:
class Activity(models.Model):
activity_id = models.CharField(max_length=MAX_URL_LENGTH, db_index=True, unique=True)
my_data = JSONField(default=dict())
这是我正在做的一个例子:
>>> from proj import models
>>> test, created = models.Activity.objects.get_or_create(activity_id="foo")
>>> created
True
>>> test.my_data['id'] = "foo"
>>> test.save()
>>> test
<Activity: {"id": "foo"}>
>>> test2, created2 = models.Activity.objects.get_or_create(activity_id="bar")
>>> created2
True
>>> test2
<Activity: {"id": "foo"}>
>>> test2.activity_id
'bar'
>>> test.activity_id
'foo'
似乎每当我更新my_data 中的任何字段时,我创建的下一个对象都会使用来自前一个对象的my_data 的数据预先填充自己。无论我使用get_or_create 还是仅使用create,都会发生这种情况。有人可以向我解释发生了什么吗?
【问题讨论】:
标签: python json django postgresql