django - 为什么我们需要“序列化”模型字段属性?
问题描述
django.db.models.fields.__init__.py
里面有一个类Field
,它被其他人继承,并带有CharFeld
一些布尔serialize
属性
class Field(RegisterLookupMixin):
def __init__(self, verbose_name=None, ... serialize=True, ...):
...
我在这里找不到关于它的文档https://docs.djangoproject.com/en/3.1/ref/models/fields/#field-attribute-reference
那么,为什么它会出现在这里,并且在某些自定义序列化技术中依赖它是否安全?
解决方案
它由序列化程序使用。这些由loaddata
anddumpdata
命令使用,它可以用于两个主要目的:固定装置和从一个数据库加载/转储到下一个数据库,可以来自不同的供应商。
它用于确定是否应该序列化该字段。模型的 Meta 类初始化中有一些复杂的逻辑决定是否应该序列化主键。如果您想找出原因,请查看(和)中setup_pk()
方法的调用者。django.db.models.options.Options
_prepare
add_field
读取此属性的逻辑位于django.core.serializer.base.Serializer.serialize()
.
推荐阅读
- javascript - 在for循环中通过knex获取多个删除结果
- unit-testing - 使用 go test - 是否可以在没有包的相对路径的情况下对单个包运行测试?
- ios - App Search API 验证工具无法找到指向应用程序的链接(通用链接)
- xamarin.forms - xamarin 表单页面继承自泛型类
- google-sheets-formula - 带有位置标签的 Google 表格公式
- java - 如何从 HashMap 转换 JSON 对象
进入多值映射 ? - python - 关闭使用特定用户目录启动的 selenium chrome?Python
- haskell - 类型同义词实例
- c# - 在 UI Canvas 上的两个游戏对象之间画线
- reactjs - React 为什么我使用 react.memo 重新渲染?