首页 文章

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

提问于
浏览
1

我无法理解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”类并使用这些调用(models.CharField等)?

谢谢

1 回答

  • 1

    你在这里有 class inheritance .

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

    你的 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!
    

相关问题