`

Django meta

阅读更多

通过一个内嵌类 "class Meta" 给你的 model 定义元数据, 类似下面这样: 

class Foo(models.Model): 
    bar = models.CharField(maxlength=30) 

    class Meta: 
        # ... 

Model 元数据就是 "不是一个字段的任何数据" -- 比如排序选项, admin 选项等等. 

下面是所有可能用到的 Meta 选项. 没有一个选项是必需的. 是否添加 class Meta 到你的 model 完全是可选的. 

db_table 
本模块在数据库中对应的表的名字: 

db_table = "pizza_orders" 

若不提供该参数, Django 会使用 app_label + '_' + module_name 作为表的名字. 

若你的表的名字是一个 SQL 保留字, 或包含 Python 变量名不允许的字符--特别是连字符 --没关系. Django 会自动在幕后替你将列名字和表名字用引号引起来. 

get_latest_by 
一个 DateField 或 DateTimeField 字段的名字. 若提供该选项, 该模块将拥有一个 get_latest() 函数以得到 "最新的" 对象(依据那个字段): 

get_latest_by = "order_date" 

点击 获取最新对象 可以看到一个完整的例子. 

order_with_respect_to 
标记给定字段的对象是 "orderable" 的.它用于关联对象以允许他们以父对象期望的方式排序.举例来说, 如果一个 PizzaToppping 关联到一个 Pizza 对象, 这样做: 

order_with_respect_to = 'pizza' 

...就允许 toppings 依照相关的 pizza 来排序. 

order_with_respect_to 
将该对象标记为可按给定字段排序. This is almost always used with related objects to allow them to be ordered with respect to a parent object. 举例来说, 如果一个 PizzaToppping 关联到一个 Pizza 对象, 你可以使用: 

order_with_respect_to = 'pizza' 

这就允许 toppings 被排序to be ordered 关于相关的 pizza 对象 

ordering 
默认排序字段及排序方式, 用于得到一个对象列表的任何场合: 

ordering = ['-order_date'] 

这是一个 tuple 或一个字符串列表. 每个字符串是一个字段名带及一个可选的前缀 "-" , 这个前缀表示按降序排序(递减). 若没有这个前缀,则表示按升序排序.字符串 "?" 表示随机排序. 

举个例子, 要对 pub_date 字段以升序排列, 这样做: 

ordering = ['pub_date'] 

要降序排列, 这样: 

ordering = ['-pub_date'] 

要对 pub_date 降序,然后对 author 升序, 这样: 

ordering = ['-pub_date', 'author'] 

点击 指定排序 查看一个完整的例子. 注意一点,不论你使用了多少个字段排序, admin 只使用第一个字段. 

permissions 
要创建一个对象所需要的额外的权限. 如果一个对象有 admin 设置, 则每个对象的添加,删除和改变权限会人(依据该选项)自动创建.下面这个例子指定了一个附加权限: can_deliver_pizzas: 

permissions = (("can_deliver_pizzas", "Can deliver pizzas"),) 

这是一个2-元素 tuple 的tuple或列表, 其中两2-元素 tuple 的格式为:(permission_code, human_readable_permission_name). . 

unique_together 
Sets of field names that, taken together, must be unique: 

unique_together = (("driver", "restaurant"),) 

这是一个字段列表的列表,这些字段的综合值必须是唯一的. 这会在 Django admin 层和数据库层同时做出限制(也就是相关的 UNIQUE 语句会被包括在 CREATE TABLE 语句中). 

verbose_name 
是该对象的一个可读性更好的唯一名字: 

verbose_name = "pizza" 

若未提供该选项, Django 则会用一个类名字的 munged 版本来代替: CamelCase becomes camel case. 

verbose_name_plural 
对象名字的复数: 

verbose_name_plural = "stories" 

若未提供该选项, Django 会使用 verbose_name + "s". 

THE REST OF THIS HAS NOT YET BEEN EDITED 
Table names 
Automatic primary key fields 

转自:http://www.woodpecker.org.cn/obp/django/django-faq/model-api.html

分享到:
评论

相关推荐

    Python库 | django_meta-0.2.1-py2.py3-none-any.whl

    标题中的"Python库 | django_meta-0.2.1-py2.py3-none-any.whl"指的是一个Python库,名为`django_meta`,版本号为0.2.1。这个库是通过Python的轮子(wheel)格式进行分发的,这是一种预编译的Python软件包格式,旨在...

    django-sqlalchemy:目前仅基于SQLalchemy核心1.42.0构建的Django ORM,用于将SQLAlchemy与Django 3.1+ PostgreSQL 12.1无缝集成

    **警告:该项目处于早期设计决策阶段。 您可以参与开发过程** 该项目的最终目标是在SQLalchemy核心之上构建django ORM,以便现有的django应用程序可以轻松地从django的当前ORM迁移到基于... 通过django Meta API的

    django笔记 django笔记

    在模型类中,我们可以定义字段类型,如CharField、IntegerField等,并使用`Meta`类来配置额外的数据库选项。 4. **视图(Views)**: 视图负责处理用户请求并返回响应。在Django中,视图通常是一个函数或类,它们...

    Django model class Meta原理解析

    以上是Django Model `class Meta`中常见的部分选项,它们极大地扩展了Django ORM的功能,使得开发者能够更加灵活地配置和控制模型的行为,以适应不同的项目需求。正确理解和使用这些元数据选项,可以帮助构建出高效...

    Python库 | djangocms_page_meta-0.5.10-py2.py3-none-any.whl

    **Python库-djangocms_page_meta 0.5.10 版本详解** `djangocms_page_meta` 是一个专门为 Django CMS 设计的库,用于管理页面元数据,如标题、描述、关键词等。这个库使得在 Django CMS 中为每个页面自定义和优化...

    Python库 | djangocms_page_meta-0.5.9-py2.py3-none-any.whl

    **Python库-djangocms_page_meta 0.5.9 版本详解** 在Python的开发环境中,库的使用是至关重要的,它们提供了丰富的功能,让开发者能够更高效地完成任务。`djangocms_page_meta`是一个针对Django CMS框架的元数据...

    2023年Django大二下学期期末复习

    3. Meta类:用于设置模型的元信息,如数据库表名、管理器等。 三、视图(View) 1. 视图函数:处理HTTP请求,根据请求类型(GET、POST等)调用不同功能,返回HTTP响应。 2. Class-based views:基于类的视图提供更...

    Django基础.rar

    class Meta: model = User fields = ['username', 'email', 'password'] ``` ### 8. 管理员(Admin) Django的内置管理员接口允许开发者轻松地管理数据。只需在`admin.py`文件中注册模型,就可以在Web界面中...

    django入门-增删改实例

    class Meta: model = UserProfile fields = ['username', 'email', 'age'] ``` 8. **权限与认证** Django提供了内置的权限和认证系统,可以实现用户登录、权限控制等功能。在本例中,可能需要添加登录检查以...

    django-filters源码包

    **django-filters源码解析** `django-filters` 是一个基于 Django 的库,用于构建复杂的查询过滤器,常用于 RESTful API 的后端处理。它允许用户通过 URL 参数或者请求体来筛选返回的数据,提供了优雅的方式来处理...

    Django读取Mysql数据并显示在前端的实例

    <meta charset="UTF-8"> <title>Employee List <h1>Employee List {% for employee in employees %} <li>{{ employee.id }} - {{ employee.name }} {% endfor %} ``` 现在,当你访问`...

    Django Web开发指南.pdf.zip

    Django提供了丰富的字段类型和管理选项,如CharField、IntegerField、DateTimeField等,以及自定义方法和Meta类用于进一步配置。模型类的实例化会自动创建数据库表,实现了ORM(对象关系映射)。 视图是应用的控制...

    django整合mysql实现对外提供接口

    class Meta: model = User fields = ('id', 'username', 'email') ``` 2. 在views.py中创建视图: ```python from rest_framework import generics from .models import User from .serializers import User...

    django layui表单加图片上传功能(Django,layui).zip

    class Meta: model = ImageModel fields = ['title', 'image'] widgets = { 'image': forms.ClearableFileInput(), } ``` 4. **Layui前端页面**: 在HTML模板文件(如`upload_image.html`)中,使用Layui的...

    Django 安装使用基础

    <meta charset="UTF-8"> <title>Login Page <label for="username">Username: <input type="text" id="username" name="username"><br> <label for="password">Password: ...

    PythonDjango支持像PostgresCitus这样的分布式多租户数据库

    class Meta: abstract = True class Customer(TenantMixin, models.Model): name = models.CharField(max_length=200) # 其他字段... class Order(TenantMixin, models.Model): customer = models.ForeignKey...

    Pro Django

    - 高级模型技巧,如自定义Manager、元选项Meta等。 4. **第4章:URLs与视图(Views)** - **知识点概述**:本章介绍了Django中URL路由机制以及视图函数/类的编写方法。 - **内容详述**: - URLconf配置文件的编写...

    8. Django 表单与模型

    class Meta: model = Book fields = ['title', 'author'] ``` **3. 验证和处理表单** 在视图函数中,我们接收POST请求,创建表单实例,然后调用`is_valid()`方法进行验证。如果表单有效,可以获取清洁后的数据...

    Django开发指南中文版

    你需要熟悉如何定义模型类,以及如何使用`Meta`类进行额外的配置。 5. **数据库迁移**:当模型发生变化时,Django提供了`makemigrations`和`migrate`命令来进行数据库迁移,确保数据库结构与代码同步。 6. **查询...

Global site tag (gtag.js) - Google Analytics