为什么需要“序列化”模型字段属性?

时间:2020-11-01 11:43:35

标签: 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

上找不到关于它的文档

那么,为什么要在这里使用它,在某些定制序列化技术中依靠它安全吗?

1 个答案:

答案 0 :(得分:1)

serializers使用它。 loaddatadumpdata命令使用它们,它们可用于两个主要目的:固定和从一个数据库到另一个数据库的加载/转储,这可以来自不同的供应商。

用于确定该字段是否应该序列化。模型的Meta类初始化中包含一些复杂的逻辑,这些逻辑确定是否应序列化主键。如果要弄清楚原因,请查看setup_pk()中的django.db.models.options.Options方法的调用方(_prepareadd_field)。

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