📜  如何在 Django 中创建抽象模型类?

📅  最后修改于: 2022-05-13 01:55:05.204000             🧑  作者: Mango

如何在 Django 中创建抽象模型类?

Django 是一个高级Python Web 框架,它鼓励快速开发和简洁实用的设计。它由经验丰富的开发人员构建,解决了 Web 开发的大部分麻烦,因此您可以专注于编写应用程序,而无需重新发明轮子。它是免费和开源的。

什么是模型继承?

Django 中的模型继承的工作方式几乎与Python中普通类继承的工作方式相同。在本文中,我们将围绕如何在 Django 模型中创建抽象基类。

抽象基类:-

当您想将一些公共信息放入许多其他模型时,抽象基类很有用。您编写基类并将抽象 = True 放在元类中。假设您有两个模型学生和老师。

模型.py

Python3
from django.db import models
  
  
class Student(models.Model):  # STUDENT
    name = models.CharField(max_length=100)
    rollno = models.IntergerField()
  
  
class Teacher(models.Model):  # TEACHER
    name = models.CharField(max_length=100)
    ID = models.IntergerField()


Python3
from django.db import models
  
  
class common(models.Model):  # COMM0N
    name = models.CharField(max_length=100)
  
    class Meta:
        abstract = True


Python3
class Student(common):  # STUDENT
    rollno = models.IntegerField()
  
  
class Teacher(common):  # TEACHER
    ID = models.IntegerField()


所以你有没有注意到一个字段名称在两种模型上都是通用的。

因此,我们没有在两个模型中添加公共字段,而是创建了另一个模型并将这些公共字段放入该模型中。

模型.py

蟒蛇3

from django.db import models
  
  
class common(models.Model):  # COMM0N
    name = models.CharField(max_length=100)
  
    class Meta:
        abstract = True

所以在这里我创建了一个模型 common 并将公共字段放在该模型中。

将 abstract = True 放在 Meta 类中。设置abstract True后,现在变成抽象类而不是模型,所以现在不能生成数据库表了。

蟒蛇3

class Student(common):  # STUDENT
    rollno = models.IntegerField()
  
  
class Teacher(common):  # TEACHER
    ID = models.IntegerField()

Ubuntu

python3 manage.py makemigrations
python3 manage.py migrate

现在,您可以继承 Student 和 Teacher 中的通用名称字段。就像普通的Python继承一样。

输出 :