迹忆客 专注技术分享

当前位置:主页 > 学无止境 >

Django 模型中的元类

作者:迹忆客 最近更新:2023/02/27 浏览次数:

元数据是指提供有关另一个数据的信息的一组特定数据。在 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)
    

在这里,TeacherStudent 模型将包含 Human 模型内的所有字段。在数据库中,只会创建 TeacherStudent 模型。

此选项用于设置用于标识数据库内表的名称。例如:如果我执行以下操作,我的模型的名称将是数据库中的 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"

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

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 以转储到其类中。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便