📜  模型中的元类——Django

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

模型中的元类——Django

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

什么是模型元?

Model Meta 基本上是模型类的内部类。

Model Meta 基本上用于更改模型字段的行为,例如更改顺序选项、verbose_name 和许多其他选项。在模型中添加 Meta 类是完全可选的。



要使用模型元,您必须像这样在模型中添加类 Meta

class student(models.Model):
    class Meta:
        options........

模型元选项

Model Meta 有很多选项,您可以在其内部类元中为您的模型提供

1. 摘要

如果 abstract = True ,则此模型将是抽象基类

Python3
class student(models.Model):
  class Meta:
      abstract = True


Python3
class student(models.Model):
  class Meta:
      app_label = 'myapp' # add app name here


Python3
class student(models.Model):
  class Meta:
      verbose_name = "stu" # add verbose_name  here


Python3
class student(models.Model):
  class Meta:
      ordering = [-1]


Python3
class Teacher(models.Model):
  pass
  
class Student(Teacher):
  class Meta:
      proxy = True


Python3
class student(models.Model):
  class Meta:
      permissions = []


2. 应用标签

如果模型是在 INSTALLED_APPS 中的应用程序之外定义的,它必须声明它属于哪个应用程序:



蟒蛇3

class student(models.Model):
  class Meta:
      app_label = 'myapp' # add app name here

3. 详细名称

verbose_name 基本上是您模型的可读名称

蟒蛇3

class student(models.Model):
  class Meta:
      verbose_name = "stu" # add verbose_name  here

4. 订购

排序基本上用于更改模型字段的顺序。

蟒蛇3

class student(models.Model):
  class Meta:
      ordering = [-1]

添加这样的排序 [-1] 它按降序更改顺序

5. 代理

如果我们添加 proxy = True 将另一个模型子类化的模型将被视为代理模型

蟒蛇3

class Teacher(models.Model):
  pass
  
class Student(Teacher):
  class Meta:
      proxy = True

这就是我们如何制作代理模型。

6. 权限

创建此对象时输入权限表的额外权限。为每个模型自动创建添加、更改、删除和查看权限。

蟒蛇3

class student(models.Model):
  class Meta:
      permissions = []
     

您可以在列表中添加额外的权限。