`
kaozjlin
  • 浏览: 116411 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

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://tangjun.alwaysdata.net/blog/28/

分享到:
评论

相关推荐

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

    在实际应用中,`django_meta`库可能会提供一些功能,比如帮助Django应用程序更好地处理模型的元数据,比如自定义模型字段的显示方式、搜索规则、排序选项等。这在开发复杂的Web应用时非常有用,尤其是需要动态生成...

    django笔记 django笔记

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

    Django model class Meta原理解析

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

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

    安装完成后,在Django CMS的项目中配置好应用,然后在页面模型中集成`PageMeta`模型,就可以在后台看到相关的元数据管理选项。 3. **兼容性**:此库兼容Python 2和Python 3,这意味着它可以广泛应用于各种Python...

    django-filters源码包

    `django-filters` 还提供了一些高级选项,如 `order_by`、`lookup_expr` 和 `distinct`,可以进一步定制过滤行为。例如,我们可以指定某个字段只支持特定的查询表达式: ```python class MyModelFilter(FilterSet):...

    轻量级Django

    同时,合理利用模型的meta选项来控制查询效率和数据库行为。 2. **视图(View)**: 视图是处理请求并返回响应的部分。轻量级开发时,可以优先考虑函数式视图,因其简单直接,易于理解和维护。如果需要,再逐步过渡到...

    Django Web开发指南.pdf.zip

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

    Pro Django

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

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

    在表单中,添加`ImageField`,并确保设置`widget`为`ClearableFileInput`,以便提供删除图片的选项。 ```python from django import forms class ImageForm(forms.ModelForm): class Meta: model = Image...

    Django-1.8.2-中文文档

    抽象模型可以通过定义一个内部类`Meta`来指定元选项,比如表名称、排序方式等。 模型的自定义选项中,`related_name`属性允许你指定从关联对象反向引用该模型实例的名字。代理模型是一种特殊类型的模型继承,它不为...

    Django前端模板及crispy form美化等

    在`settings.py`文件中,除了已经添加的Crispy Forms配置外,还可以进一步配置其他与安全相关的选项: ```python # 安全相关配置 SESSION_COOKIE_SECURE = True # 只通过HTTPS发送session cookie CSRF_COOKIE_...

    django教程

    - **元选项**:模型可以通过Meta内部类定义额外的选项,如排序规则、数据库表名等。 **2. 视图层(View Layer)** 视图层处理来自用户的请求,并负责将数据呈现给用户。视图可以是基于函数的,也可以是基于类的。 -...

    django python taggit_python_django_

    在本文中,我们将深入探讨如何使用Python和Django框架创建一个功能完备的标签系统,特别关注`taggit`这个流行的库。...`taggit`不仅简化了开发流程,还提供了许多可定制化的选项,以适应各种项目需求。

    django 1.7.3

    Django 1.7 对模型的元类进行了改进,允许在不使用 `Meta` 类的情况下定义模型选项。这样,模型的元数据可以更灵活地进行配置。 4. **中间件(Middleware)**: Django 1.7 对中间件系统进行了重构,增强了可预测性...

    django实现省市县级联菜单

    然后,我们可以在`mymenu/views.py`中创建视图函数,处理用户的选择并返回相应的下拉菜单选项。这里我们将使用JavaScript(如jQuery)来实现级联效果。视图可能如下: ```python from django.shortcuts import ...

    django开发中文版资料

    - **元选项**:解释`Meta`类的作用及常见的元选项。 - **模型类**:进一步探讨模型类的设计原则与最佳实践。 - **查询集**:介绍如何使用QuerySet进行数据检索。 - **执行查询**:演示如何执行各种类型的数据库查询...

    Django Todo List

    - `Meta`类:定义了模型的元选项,如排序方式。 - `Admin`类:提供了Django管理界面中的配置选项。 - `Item`模型: - `title`字段:用于存储项目的标题,类型为CharField,最大长度为250个字符。 - 另外还可以...

    Django官方文档中文翻译(models部分)

    二、模型选项 1. Meta类:在模型类中,可以通过`Meta`类来设置模型的元数据,如数据库表名、排序规则等。 ```python class User(models.Model): # ... class Meta: db_table = 'custom_user' ordering = ['-...

    python的Django框架模型

    Django允许我们在模型类中定义元数据,如`Meta`类,它可以指定模型的表名、是否自动创建唯一索引等选项。例如: ```python class Meta: db_table = 'my_custom_table_name' unique_together = ['field1', '...

Global site tag (gtag.js) - Google Analytics