通过一个内嵌类 "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。这个库是通过Python的轮子(wheel)格式进行分发的,这是一种预编译的Python软件包格式,旨在...
**警告:该项目处于早期设计决策阶段。 您可以参与开发过程** 该项目的最终目标是在SQLalchemy核心之上构建django ORM,以便现有的django应用程序可以轻松地从django的当前ORM迁移到基于... 通过django Meta API的
在模型类中,我们可以定义字段类型,如CharField、IntegerField等,并使用`Meta`类来配置额外的数据库选项。 4. **视图(Views)**: 视图负责处理用户请求并返回响应。在Django中,视图通常是一个函数或类,它们...
以上是Django Model `class Meta`中常见的部分选项,它们极大地扩展了Django ORM的功能,使得开发者能够更加灵活地配置和控制模型的行为,以适应不同的项目需求。正确理解和使用这些元数据选项,可以帮助构建出高效...
**Python库-djangocms_page_meta 0.5.10 版本详解** `djangocms_page_meta` 是一个专门为 Django CMS 设计的库,用于管理页面元数据,如标题、描述、关键词等。这个库使得在 Django CMS 中为每个页面自定义和优化...
**Python库-djangocms_page_meta 0.5.9 版本详解** 在Python的开发环境中,库的使用是至关重要的,它们提供了丰富的功能,让开发者能够更高效地完成任务。`djangocms_page_meta`是一个针对Django CMS框架的元数据...
3. Meta类:用于设置模型的元信息,如数据库表名、管理器等。 三、视图(View) 1. 视图函数:处理HTTP请求,根据请求类型(GET、POST等)调用不同功能,返回HTTP响应。 2. Class-based views:基于类的视图提供更...
class Meta: model = User fields = ['username', 'email', 'password'] ``` ### 8. 管理员(Admin) Django的内置管理员接口允许开发者轻松地管理数据。只需在`admin.py`文件中注册模型,就可以在Web界面中...
class Meta: model = UserProfile fields = ['username', 'email', 'age'] ``` 8. **权限与认证** Django提供了内置的权限和认证系统,可以实现用户登录、权限控制等功能。在本例中,可能需要添加登录检查以...
**django-filters源码解析** `django-filters` 是一个基于 Django 的库,用于构建复杂的查询过滤器,常用于 RESTful API 的后端处理。它允许用户通过 URL 参数或者请求体来筛选返回的数据,提供了优雅的方式来处理...
<meta charset="UTF-8"> <title>Employee List <h1>Employee List {% for employee in employees %} <li>{{ employee.id }} - {{ employee.name }} {% endfor %} ``` 现在,当你访问`...
Django提供了丰富的字段类型和管理选项,如CharField、IntegerField、DateTimeField等,以及自定义方法和Meta类用于进一步配置。模型类的实例化会自动创建数据库表,实现了ORM(对象关系映射)。 视图是应用的控制...
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...
class Meta: model = ImageModel fields = ['title', 'image'] widgets = { 'image': forms.ClearableFileInput(), } ``` 4. **Layui前端页面**: 在HTML模板文件(如`upload_image.html`)中,使用Layui的...
<meta charset="UTF-8"> <title>Login Page <label for="username">Username: <input type="text" id="username" name="username"><br> <label for="password">Password: ...
class Meta: abstract = True class Customer(TenantMixin, models.Model): name = models.CharField(max_length=200) # 其他字段... class Order(TenantMixin, models.Model): customer = models.ForeignKey...
- 高级模型技巧,如自定义Manager、元选项Meta等。 4. **第4章:URLs与视图(Views)** - **知识点概述**:本章介绍了Django中URL路由机制以及视图函数/类的编写方法。 - **内容详述**: - URLconf配置文件的编写...
class Meta: model = Book fields = ['title', 'author'] ``` **3. 验证和处理表单** 在视图函数中,我们接收POST请求,创建表单实例,然后调用`is_valid()`方法进行验证。如果表单有效,可以获取清洁后的数据...
你需要熟悉如何定义模型类,以及如何使用`Meta`类进行额外的配置。 5. **数据库迁移**:当模型发生变化时,Django提供了`makemigrations`和`migrate`命令来进行数据库迁移,确保数据库结构与代码同步。 6. **查询...