在Django Model类中使用self

Kar*_*agi 9 python django self django-models

在Django中向models.py添加模型类时,为什么我们不使用self来定义我们定义的字段变量?不应该使用自变量变量使它们成为类变量,而"可能"会导致问题.

Sha*_*hin 10

Django使用类根据您提供的类定义创建实际类.简而言之,在实例化模型类时,元类将运行模型字段定义并返回具有适当属性的相应类.

要直接回答您的问题,使用类变量而不是实例变量(object.self)允许元类检查类属性,而无需首先实例化它.

有关更多信息,请查看源文件和以下文档:

  • 4年前我问了一个类似的问题,所以我深入研究了`django/db`代码.它在几个层面上具有启发性; 它是元类用法中的硕士课程. (2认同)