Django 模型中的元类
元数据是指提供有关另一个数据的信息的一组特定数据。在 Django 中,我们使用 Django 模型来设计我们数据库的表及其字段。如果我们必须添加一些关于模型本身的数据,我们使用 Meta
类。在本文中了解有关 Django 模型中 Meta
类的更多信息。
Meta
类是一个内部类,这意味着它在模型内部定义如下:
from django.db import models
class MyModel(models.Model):
...
class Meta:
...
Meta
类可用于定义有关模型的各种内容,例如权限、数据库名称、单复数名称、抽象、排序等。向 Django 模型添加 Meta
类是完全可选的。
此类还带有许多你可以配置的选项。以下是一些常用的元选项;你可以探索所有的元选项这里
该选项用于定义模型是否抽象;它们与抽象类的工作方式相同。抽象类是不能被实例化,只能被扩展或继承的类。
设置为抽象的模型只能被继承。如果有多个具有共同字段的模型,则可以使用此选项。
from django.db import models
class Human(models.Model):
genders = (
("M", "Male"),
("F", "Female"),
("NB", "Non-binary"),
("T", "Transgender"),
("I", "Intersex"),
("O", "Other"),
("PNTS", "Prefer not to say")
)
name = models.CharField(max_length = 200)
age = models.IntegerField(default = 0)
gender = models.CharField(max_length = 50, choices = genders)
class Meta:
abstract = True # Important
class Teacher(Human):
subject = models.CharField(max_length = 200)
class Student(Human):
grade = models.IntegerField(default = 0)
在这里,Teacher
和 Student
模型将包含 Human
模型内的所有字段。在数据库中,只会创建 Teacher
和 Student
模型。
此选项用于设置用于标识数据库内表的名称。例如:如果我执行以下操作,我的模型的名称将是数据库中的 job
。
from django.db import models
class JobPosting(models.Model):
class Meta:
db_table = "job"
此选项采用字符串值列表,它们是模型字段。它用于定义模型对象的排序。当检索此模型的对象时,它们将按此顺序出现。
from django.db import models
class JobPosting(models.Model):
dateTimeOfPosting = models.DateTimeField(auto_now_add = True)
class Meta:
ordering = ["-dateTimeOfPosting"]
在上面的示例中,检索到的对象将根据 dateTimeOfPosting
字段按降序排列。(-
前缀用于定义降序。)
此选项用于为模型定义一个人类可读的单数名称,并将覆盖 Django 的默认命名约定。此名称也将反映在管理面板 (/admin/
) 中。
from django.db import models
class JobPosting(models.Model):
class Meta:
verbose_name = "Job Posting"
此选项用于为模型定义一个人类可读的复数名称,这将再次覆盖 Django 的默认命名约定。此名称也将反映在管理面板 (/admin/
) 中。
from django.db import models
class JobPosting(models.Model):
class Meta:
verbose_name_plural = "Job Postings"
相关文章
Python 中的第一类函数
发布时间:2023/04/25 浏览次数:113 分类:Python
-
第一类函数是被语言视为对象或变量的函数。 我们可以将它们分配给变量或将它们作为对象传递给其他函数。Python 支持第一类函数的功能。
Python 函数参数类型
发布时间:2023/04/25 浏览次数:140 分类:Python
-
在这篇 Python 文章中,我们将学习 Python 中使用的函数参数类型。 我们还将学习如何编写不带参数的 Python 函数。
Python 生成器中的 send 函数
发布时间:2023/04/25 浏览次数:111 分类:Python
-
本教程将介绍如何在 Python 中使用生成器的 send() 函数。我们可以创建一个像迭代器一样运行的函数,并且可以通过 Python 生成器函数在 for 循环中使用。
Python Functools 偏函数
发布时间:2023/04/25 浏览次数:80 分类:Python
-
本文介绍了我们如何使用分部函数,该函数随 functools 库一起提供,并附有示例。 这显示了调用时如何传递属性和部分函数。
Python main() 函数中的参数
发布时间:2023/04/25 浏览次数:157 分类:Python
-
在本教程结束时,我们应该了解Python 中在 main() 中使用参数是否是一种好的做法。
Python 中的内置 identity 函数
发布时间:2023/04/25 浏览次数:88 分类:Python
-
identity 函数只是一个返回其参数的函数。 当我们定义一个恒等函数并赋值时,它会返回该值。在本教程结束时,我们将了解 Python 是否具有内置的 identity 函数。
在 Python 中拟合阶跃函数
发布时间:2023/04/25 浏览次数:177 分类:Python
-
阶跃函数是带有看起来像一系列步骤的图形的方法。 它们由一系列中间有间隔的水平线段组成,也可以称为阶梯函数。本文给出了阶跃函数的简单演示。
在 Python 中创建双向链表
发布时间:2023/04/25 浏览次数:54 分类:Python
-
双向链表是指由称为节点的顺序链接的记录集组成的链接数据结构。 每个节点包含一个前一个指针、一个下一个指针和一个数据字段。
将 Python 类对象序列化为 JSON
发布时间:2023/04/25 浏览次数:152 分类:Python
-
本教程介绍序列化过程。 它还说明了我们如何使用 toJSON() 方法使 JSON 类可序列化,并包装 JSON 以转储到其类中。