model.py下的Meta笔记

来源:互联网 发布:上海同济大学网络教育 编辑:程序博客网 时间:2024/05/21 20:30
class Topic(models.Model):    text = models.CharField(max_length=200)      date_added = models.DateTimeField(auto_now_add=True)    author = models.CharField(max_length=20)    def __str__(self):     # 1    """返回 models 的字符串的表示"""        return self.textclass Entry(models.Model):    class Meta:            # 2        verbose_name_plural = "entriesssss"     def __str__(self):        """返回 model 的字符串表示"""        return self.text[:50] + "..."

1、 注释#1处
是一个str()函数,其作用是。。。。。(代完成)
2、 注释#2处:
首先来看看 Meta元类的原文档:
  Model metadata is “anything that’s not a field”, such as ordering options (ordering), database table name (db_table), or human-readable singular and plural names (verbose_name and verbose_name_plural). None are required, and adding class Meta to a model is completely optional.
  
翻译:
  模型元数据是任何不是字段的东西,例如排序选项( ordering)、数据库表名(db_table)、或人类可读的单数和复数名称(verbose_name和verbose_name_plural)。没有一个是必需的,在模型中class Meta是完全可选的。

Meta下有很多options,这里选两个用到的举例说明:
(1) ordering  
  这个字段是告诉Django模型对象返回的记录结果集是按照哪个字段排序的。
这是一个字符串的元组或列表,来自于class Model中的字段
当字段名前面没有’-‘时,将默认使用升序排列。使用’?’将会随机排列
ordering=[‘date_added] # 按发布时间升序排列
ordering=[‘-date_added’] # 按发布时间按降序排列,-表示降序
ordering=[‘?date_added’] # 随机排序,?表示随机
ordering=[‘-date_added’,’author’] # 以date_added为降序,再以author升序排列

(2) verbose_name_plural
    这个选项是指定模型的复数形式是什么,verbose_name_plural = “entriesssss",会再admin账户下才看得到差别。
   如果不指定Django会自动在模型名称后加一个s,并且首字母自动大写’
  比如上面的Topic 和 Entry,一个没有verbose_name_plural参数,一个有并且为verbose_name_plural= “entriesssss”,看结果:
  用admin登陆后台