首页 > 解决方案 > 使用 Django Json 字段来减少迁移问题

问题描述

我是 Django Json Field 的新手。我现在一直在创建模型并迁移它们。现在我被介绍给 Jsonfield。我听说的是,由于 jsonfield,这是缓解迁移问题的最佳方法。这是因为,如果我们在生产中填充字段后必须从模型中添加字段或删除字段(如果我们使用了其他常规字段,如 chafield 和 emailfield),可能会出现迁移问题,如果我们使用 jsonfield 可以避免,因为我们可以在 jsonfield 中传递具有任意数量字段的任何 json 数据。那么,这是避免迁移问题的最佳方法吗?我在这里寻求专家建议,因为没有人可以问,这就是我所听到的。

好像是这样的。

class Example(models.Model): 
    
    data = models.JSONField(null=False, default=dict)

因此,与其创建名为 Contacts 和 Feedback 的两个模型来保存联系表单和反馈表单的数据,我可以简单地使用这个相同的示例模型并验证以接受前端中存在的许多此类表单的任何数据。

标签: djangoformsdjango-modelsdjango-rest-frameworkdjango-jsonfield

解决方案


如果您只想使用 JSON 来避免迁移,那么这不是一个好主意。

基本上,使用 JSON 有以下两条规则:

  • 如果数据没有严格的结构。
  • 如果您不需要使用给定数据查询(过滤、搜索、排序等)数据库。

考虑这个例子:

class User:
    email = EmailField()
    address = JSONField()

email是在一个单独的字段中,因为我们想轻松地查询数据库以检查重复注册。

address位于 JSONField 中,因为我们不需要使用地址数据查询数据库。

但是,某些应用程序可能需要使用地址进行查询,例如列出来自特定城市的所有用户。在这种情况下,使用 JSON 将是一个糟糕的选择。


推荐阅读