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

时间:2017-06-06 15:31:34

标签: django django-models metaclass django-serializer

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

1 个答案:

答案 0 :(得分:2)

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

你在谷歌上发现的是在谈论Python的元类,这是一个Django框架大量使用的构造,但不是在面向用户的代码中。 This blog post用于解释Django如何在框架代码中使用元类。

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