您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页Django中model类的Meta选项

Django中model类的Meta选项

来源:叨叨游戏网

Django模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性。而可用的选项大致包含以下几类:

class UserInfo(models.Model):
       username = models.CharField(max_length=32,unique=True)
       
        class meta:
              #相关选项
              pass

verbose_name

模型类的易读名

verbose_name_plural

模型的复数形式是什么。若未指定则,Django 会使用 verbose_name + "s".

abstract

这个属性是定义当前的模型是不是一个抽象类。所谓抽象类是不会对应数据库表的。一般我们用它来归纳一些公共属性字段,然后继承它的子类可以继承这些字段。

Options.abstract
如果abstract = True 这个model就是一个抽象类

app_label

这个选项只在当项目中有多个应用,而你的模型不在默认的应用程序包下的models.py文件中,这时候需要指定你这个模型是属于哪个应用的。例如,app_label = 'myapp'

db_table

自定义数据库表名。

django在默认情况会使用  应用名 + '_' + 模型类名   的格式来作为数据库中表名。

order_with_repect_to

使该对象相对于给定字段可排序,一般来说order_with_respect_to值是一个外键

当order_with_respect_to 设置之后,模型会提供两个用于设置和获取关联对象顺序的方法:get_RELATED_order() 和set_RELATED_order(),其中RELATED是小写的模型名称。例如,假设一个 Question 对象有很多相关联的Answer对象,返回的列表中含有相关联Answer对象的主键


class Question(models.Model):
    text = models.TextField()
    # ...

class Answer(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    # ...

    class Meta:
        order_with_respect_to = 'question'
question = Question.objects.get(id=1)
question.get_answer_order()
question.set_answer_order([3, 1, 2])  #根据列表内主键顺序返回相关对象

同时还提供了get_next_in_order() 和 get_previous_in_order() 两个方法。

注意:order_with_respect_to会在数据表中添加一个_order 字段,并且会将该字段作为排序依据字段。所以,order_with_respect_to和ordering不可同时使用。

ordering

指明Django模型对象返回的记录结果集是按照哪个字段如何排序的。

  • ordering=['order_date'] # 按订单升序排列
  • ordering=("id",) #按照订单id升序排列
  • ordering=['-order_date'] # 按订单降序排列,-表示降序
  • ordering=['?order_date'] # 随机排序,?表示随机
  • ordering=['-pub_date','author'] # 以pub_date为降序,在以author升序排列

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务