django - 使用 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 的两个模型来保存联系表单和反馈表单的数据,我可以简单地使用这个相同的示例模型并验证以接受前端中存在的许多此类表单的任何数据。
解决方案
如果您只想使用 JSON 来避免迁移,那么这不是一个好主意。
基本上,使用 JSON 有以下两条规则:
- 如果数据没有严格的结构。
- 如果您不需要使用给定数据查询(过滤、搜索、排序等)数据库。
考虑这个例子:
class User:
email = EmailField()
address = JSONField()
这email
是在一个单独的字段中,因为我们想轻松地查询数据库以检查重复注册。
它address
位于 JSONField 中,因为我们不需要使用地址数据查询数据库。
但是,某些应用程序可能需要使用地址进行查询,例如列出来自特定城市的所有用户。在这种情况下,使用 JSON 将是一个糟糕的选择。
推荐阅读
- c# - 从通用 EditorFor 模板绑定模型属性的值
- google-apps-script - 如何使用带有脚本的 appendRow 将两行添加到谷歌工作表
- angular - 同一组件内的角度动画
- c++ - 类图中接口和类所需的关系,C++
- maven - maven中的传递依赖
- python - 合并具有不同和未知字段的数据帧
- linux - foreach 循环中的 TCSH 错误:files.list:找不到命令
- javascript - 如何将复杂的字符串拆分为数组?
- javascript - 如何通过过滤器在具有行跨度的表中进行搜索
- fabricjs - Fabricjs v2.4.1 loadFromJSON 从 v1.7.17 生成的图像缩放问题