Django
中间件:概述
中间件:自定义
Celery(一)
内置应用的作用
内置中间件的作用
Celery(二)
模型 class Meta
模型 管理器(Manager)
related_name 介绍
prefetch_related 介绍
本文档使用 MrDoc 发布
-
+
首页
模型 class Meta
Django Model class Meta 有以下属性: ### 1. 基本属性 ``` class MyModel(models.Model): class Meta: db_table = "my_table" # 指定表名 ordering = ["-created_at"] # 默认排序 verbose_name = "我的模型" # 模型名称 verbose_name_plural = "我的模型" # 复数名称 abstract = True # 抽象基类 managed = True # 是否由Django管理表的创建、删除 ``` ### 2. 索引相关 ``` class Meta: indexes = [ models.Index(fields=['user_id', 'created_at']), ] unique_together = [['field1', 'field2']] # 联合唯一 index_together = [['field1', 'field2']] # 联合索引 ``` ### 3. 权限相关 ``` class Meta: permissions = [ ("can_publish", "Can publish posts"), ] default_permissions = ('add', 'change', 'delete', 'view') ``` ### 4. 代理模型 ``` class Meta: proxy = True # 代理模型 base_manager_name = 'objects' # 基础管理器名称 ``` 代理模型(Proxy Model)是 Django 中一种特殊的模型类型,它允许你改变模型的 Python 行为(如添加新方法或修改默认管理器),而不改变模型的数据库结构。 ``` # 原始模型 class Person(models.Model): name = models.CharField(max_length=50) birth_date = models.DateField() def __str__(self): return self.name # 代理模型 class Student(Person): class Meta: proxy = True # 声明这是一个代理模型 ordering = ['name'] # 修改排序规则 @classmethod def get_active_students(cls): # 自定义查询方法 return cls.objects.filter(active=True) ``` 特点和用途: - 不创建新表; - 使用原始模型的数据库表; - 只能修改 Python 行为; - 不能添加新字段; - 可以有不同的默认排序、管理器等; ### 5. 其他常用属性 ``` class Meta: app_label = 'myapp' # 应用标签 db_tablespace = 'default' # 表空间 get_latest_by = 'created_at' # latest()方法依据 order_with_respect_to = 'user' # 相对排序 ```
gaojian
2025年2月6日 09:17
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码