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

标签 django django-models metaclass django-serializer

我是 python 和 django 的新手,正在学习序列化器。我观察到,在定义序列化器类时,它需要在其中嵌套一个元类。我不擅长这个元类概念,所以我用谷歌搜索它并发现元类是一个实例是类的类。即使读完后我也很困惑。外部序列化器类是这里内部元类的实例吗?这里使用这个元类有什么必要?

最佳答案

Python 的元类和 Django 的元类是不同的概念。

您在 google 上发现的内容是关于 Python 的元类,这是 Django 框架大量使用的构造,但在面向用户的代码中并未使用。 This blog post解释 Django 如何在框架代码中使用元类。

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

关于django:为什么我们在 modelSerializer 中使用嵌套元类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44394146/

相关文章:

django - 为 Django 外键字段显示超过 '__str__'

java - Groovy 中的基本运算符重载

django - 如何将数据添加到数据库?

python - 何时在 Python 中内联元类的定义?

python - 关于 Python 中的元类

django - 如何在 Django 中使用 unique_together 字段验证 ModelForm?

python - 如何模拟 django 信号处理程序?

python - Django 管理员在模型编辑时间歇性地返回 404

django - 重写模型中的 get() 方法

python - 如何在 Django 的项目文件夹中创建数据库?