Django model

来自linux中国网wiki
跳到导航 跳到搜索

Django model中的 class Meta 详解


一般的样子
    class Meta:
        verbose_name = '项目管理 '
        verbose_name_plural = verbose_name

    def __str__(self):
        return f"{self.name}项目 "

解说

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

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




verbose_name
verbose_name的意思很简单,就是给你的模型类起一个更可读的名字:

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

verbose_name_plural
这个选项是指定,模型的复数形式是什么,比如:

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


ordering
这个字段是告诉Django模型对象返回的记录结果集是按照哪个字段排序的。比如下面的代码:

ordering=['order_date'] 
# 按订单升序排列
ordering=['-order_date'] 
# 按订单降序排列,-表示降序
ordering=['?order_date'] 
# 随机排序,?表示随机
ordering = ['-pub_date', 'author']
# 对 pub_date 降序,然后对 author 升序

abstract

Options.abstract
如果 abstract = True, 就表示模型是 抽象基类 (abstract base class).


permissions
permissions主要是为了在Django Admin管理模块下使用的,如果你设置了这个属性可以让指定的方法权限描述更清晰可读。

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

permissions = (("can_deliver_pizzas", "Can deliver pizzas"),)
这是一个2-元素 tuple 的tuple或列表, 其中两2-元素 tuple 的格式为:(permission_code, human_readable_permission_name).


django models def __str__(self)

建议先看
https://segmentfault.com/q/1010000006121303
 def __str__(self):
        """将模型类以字符串的方式输出"""
        return self.name

举例子 只写模型类、不写__str__的时候
只写模型类、不写__str__的时候
class BookInfo(models.Model):
    # 创建字段,字段类型...
    name = models.CharField(max_length=10)

写__str__ 显示为中文str 等等
 

class BookInfo(models.Model):
    # 创建字段,字段类型...
    name = models.CharField(max_length=10)
     def __str__(self):
     #    """将模型类以字符串的方式输出"""
         return self.name

https://segmentfault.com/q/1010000006121303

django models def __str__(self)

Django模型类的补充__str__方法

Django models def __str__(self)有什么作用?

see also

Django model中的 class Meta 详解

Django模型类Meta元数据详解(class Meta: )

goodDay47-Django中的class Meta知识点