Django / Python:类Classname(models.Model)参数的混淆

时间:2014-03-28 20:24:41

标签: django-models

我无法理解models.Model参数以及它在这里做了什么。我在工作中学习django,这是我的第一个软件项目。这是一篇:

class DocumentRequest(models.Model):
    #contact info fields
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)

在代码的第一部分中,我们使用了Charfield,IntegerField,DateTimeField等。如果我正确的话,它似乎是模型文件的Model类允许使用这些东西。我不明白你为什么要使用models.Model作为参数,为什么不直接导入" Model" class并使用这些调用(models.CharField等)?

由于

1 个答案:

答案 0 :(得分:1)

这里有class inheritance

Model模块中有一个django.db.models类。您实际上可以检查源代码here, currently starting at line 371。正如您向下滚动时所看到的,有很多方法。方法是在类内部定义的函数。当你在另一个类声明期间subclass时,它会继承父类中定义的那些方法(以及其他优点)。

您的DocumentRequest课程将包含Model课程中定义的所有内容以及特定于您的新课程的新内容。 class inheritance的概念为我们省去了很多麻烦,绝对是理解面向对象编程的核心。

你可以这样做:

dr = DocumentRequest()
dr.first_name = "Mark"
dr.last_name = "Twain"
dr.save()  # save() method exists, we can use it right away!