首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在django中向JSONfield添加一个自动增量字段

问在django中向JSONfield添加一个自动增量字段
EN

Stack Overflow用户
提问于 2022-07-19 10:23:38
回答 1查看 54关注 0票数 0

我已经能够将数据插入到我的字段(即JSONField )中

代码语言:javascript
复制
  modelName.family_member.append({"name":'Brian King',
                    "relationship":'Father',
                    "occupation":'Engineer'})

但我希望添加一个id字段,它将自动增加,就像mysql中的那样,因此数据调用类似于

代码语言:javascript
复制
{'id':1,
"name":'Brian King',
"relationship":'Father',
"occupation":'Engineer'},
{'id':2,
"name":'Demi King',
"relationship":'Mother',
"occupation":'Teacher'},

我使用Django和mysql作为我的数据库。我的模型声明是这样的。

代码语言:javascript
复制
family_member = models.JSONField(default=jsonfield_default_value)

拜托,我该怎么做?

EN

回答 1

Stack Overflow用户

发布于 2022-07-19 10:43:52

请不要使用JSONField。关系数据库仍然不能很有效地处理JSON数据。例如,它将阻止有效的更新:这里所做的是每次将整个JSON blob发送回数据库。随着JSON的增长,数据库更新一行的工作量也会随之增加。过滤、更新、删除等等都是相当有问题的。虽然在使使用JSON更加方便方面付出了很大的努力,但在关系数据库应该做的事情上,这仍然是非常“正交”的。

通常会创建一个额外的模型,因此:

代码语言:javascript
复制
class FamilyMember(models.Model):
    person = models.ForeignKey(
        Person,
        related_name=models.CASCADE
    )
    name = models.CharField(max_length=128)
    relationship = models.CharField(max_length=128)
    occupation = models.CharField(max_length=128)

在这里使用Person,您最初定义关系的模型。

然后可以添加数据,例如:

代码语言:javascript
复制
FamilyMember.objects.create(
    person=my_person,
    name='Brian King',
    relationship='Father',
    occupation='Engineer'
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73035193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档