模型中的元类 – Django
Django是一个高水平的Python Web框架,鼓励快速开发和简洁、务实的设计。它由经验丰富的开发人员构建,解决了Web开发的许多麻烦,因此你可以专注于编写你的应用程序,而不需要重新发明车轮。它是免费和开源的。在前进之前,也要先了解一下Django模型。
模型元基本上是你的模型类的内部类。模型Meta基本上是用来改变你的模型字段的行为,如改变订单选项,verbose_name,和许多其他选项。在你的模型中添加一个Meta类是完全可选的。为了使用模型元,你必须在你的模型中添加元类,如下图所示。
class student(models.Model):
class Meta:
options........
模型元选项
模型元有很多选项,你可以在其内部类元中给你的模型提供很多选项
1. abstract
如果abstract = True,这个模型将是一个抽象的基类。
class student(models.Model):
class Meta:
abstract = True
2. app_label
如果一个模型被定义在INSTALLED_APPS中的应用程序之外,它必须声明它属于哪个应用程序。
class student(models.Model):
class Meta:
app_label = 'myapp' # add app name here
3. verbose_name
verbose_name基本上是你的模型的一个可读名称。
class student(models.Model):
class Meta:
verbose_name = "stu" # add verbose_name here
4. ordering
排序基本上是用来改变你的模型字段的顺序。
class student(models.Model):
class Meta:
ordering = [-1]
像这样添加排序[-1],它改变了降序的顺序。
5. proxy
如果我们添加proxy = True,一个子类化另一个模型的模型将被视为一个代理模型。
class Teacher(models.Model):
pass
class Student(Teacher):
class Meta:
proxy = True
这就是我们如何能做一个代理模型。
6. permissions
创建此对象时要输入权限表的额外权限。添加、更改、删除和查看的权限是为每个模型自动创建的。
class student(models.Model):
class Meta:
permissions = []
你可以在列表内添加额外的权限。
7. db_table
我们可以通过在元类中使用db_table来覆盖表的名称。
class student(models.Model):
class Meta:
db_table = 'X'
这将把表的名称改为X。
8. get_latest_by
它返回表中基于给定字段的最新对象,通常用于DateField、DateTimeField或IntegerField。
class student(models.Model):
class Meta:
get_latest_by = "order_date"
按升序排列返回最新的order_date。