在Django模型类中使用self

13 投票
1 回答
11168 浏览
提问于 2025-04-16 20:32

在Django的models.py文件中添加模型类时,为什么我们不在定义字段变量时使用self呢?如果不使用self,字段变量不是应该变成类变量吗?这样可能会导致一些问题。

1 个回答

12

Django使用 metaclass(元类)来根据你提供的类定义创建实际的类。简单来说,当你实例化你的模型类时,元类会检查你的模型字段定义,然后返回一个具有相应属性的类。

直接回答你的问题,使用类变量而不是实例变量(object.self)可以让元类在不需要先实例化类的情况下,检查类的属性。

想了解更多信息,可以查看源代码和以下文档:

撰写回答