首页 > 解决方案 > 为什么我们需要“序列化”模型字段属性?

问题描述

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

那么,为什么它会出现在这里,并且在某些自定义序列化技术中依赖它是否安全?

标签: django

解决方案


它由序列化程序使用。这些由loaddataanddumpdata命令使用,它可以用于两个主要目的:固定装置和从一个数据库加载/转储到下一个数据库,可以来自不同的供应商。

它用于确定是否应该序列化该字段。模型的 Meta 类初始化中有一些复杂的逻辑决定是否应该序列化主键。如果您想找出原因,请查看(和)中setup_pk()方法的调用者。django.db.models.options.Options_prepareadd_field

读取此属性的逻辑位于django.core.serializer.base.Serializer.serialize().


推荐阅读