[英]Append JSON array with another item using Python
我最近迁移到Python,无法解决非常简单的问题(使用Django)。 模型具有JSON字段(PostgreSQL),例如,水果。 更新实例时,我会这样:
model.fruits = {"id": 1, "name": "apple"}
model.save()
编辑模型时,我想添加另一个水果(追加),因此结果将只有几个JSON项目,并且model.fruits将返回如下值:
[
{
"id": 1,
"name": "apple"
},
{
"id": 2,
"name": "banana"
},
{
"id": 3,
"name": "orange"
},
]
我尝试搜索解决方案,但似乎此字典的append函数会覆盖值,而不是将其追加。 将项目追加到数据库中此JSON字段的快速方法是什么? 也许有一个快速解决方法的库?
model.fruits = {"id": 1, "name": "apple"}
*定义字典,您不能追加到字典,可以向其添加键
但是,您可以将元素追加到JSON数组中,例如,如果model.fruits
是数组(或列表,在Python中称为列表),例如
model.fruits = [{"id": 1, "name": "apple"},]
它定义了一个包含1个元素的数组,然后可以将其追加
model.fruits.append({"id": 2, "name": "banana"})
一些参考:
https://docs.djangoproject.com/en/1.8/ref/contrib/postgres/fields/#hstorefield https://docs.djangoproject.com/en/1.8/ref/contrib/postgres/fields/#arrayfield
*老实说,以复数形式命名的东西(例如fruits
来容纳单个对象没有任何意义,应该是一个容器(如列表)
在Django中,您应该创建一个名为Fruit的新模型。
class Fruit(models.Model):
name = models.Charfield(max_length=50)
在您的主模型中,您应该具有ManyToManyField 。
fruits = models.ManyToManyField(Fruit, blank=True, related_name='model')
这样,您将来就可以添加更多字段来进行过滤和其他所有操作。
向模型对象添加水果
obj.fruits.add(1, 2) # where 1 and 2 are id's of fruits to add
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.