我是 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/