django:为什么我们在 modelSerializer 中使用嵌套元 class?

django: Why do we use a nested meta class inside modelSerializer?

我不熟悉 python 以及 django 和序列化程序。我观察到在定义序列化器 class 时,它需要一个嵌套的元数据 class 在里面。我不擅长这个 meta class 概念,所以我用谷歌搜索了一下,发现 metaclass 是一个 class ,它的实例是 classes。即使读完之后我也很困惑。外部序列化器 class 是内部元 class 的实例吗?在这里使用这个 meta class 有什么需要?

Python的metaclasses和Django的Metaclasses是不同的概念。

您在 google 上找到的是关于 Python 的 metaclasses,Django 框架使用的构造很多,但不在其面向用户的代码中。 This blog post 解释了 Django 如何在框架代码中使用 metaclasses。

Django 的 Meta class 是另一方面,它是一个内部 class 结构,用于一些框架最前面的元素:模型、表单、序列化器、ModelAdmins 等。那些 classes 描述了在运行时或迁移时读取的某个元素的配置,但严格来说并没有保存在数据库中,因为它们与数据库无关。例如,如果未指定顺序,当框架需要知道该模型的 QuerySet 的首选顺序时,框架会读取模型的元配置。表单将读取它在调用 is_valid 时必须验证的字段。等等。