Django框架(10.Django中的模型类的定义以及模型类字段属性和选项)

Django中的模型类的定义以及模型类字段属性和选项

1.模型类的定义

2.模型类属性命名限制  

2.1字段类型和属性

2.2选项


1.模型类的定义

  1. ORM:表就代表类,字段代表属性
  2. 模型类需要继承自models.Model
  3. 模型类会自动为我们添加(生成)一个主键
  4. 有关表名,django会自动从模型类的名称和包含它的应用程序中获取数据库表的名称。模型的数据库表名名称是通过模型的“应用程序标签”(使用的名称)加入模型的类名称,并在它们之间加入下划线来构建。可以通过内部类设置覆盖表名,在模型类的内部中添加内部的类进行设置,verbose_name是进入到admin的后台中显示信息的配置
class Meta:
    db_table = "表名"
    verbose_name = 'admin显示的信息'

2.模型类属性命名限制  

1)不能是python的保留关键字。

2)不允许使用连续的下划线,这是由django的查询方式决定的。

3)定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下:

     属性名=models.字段类型(选项)

2.1字段类型和属性

使用时需要引入django.db.models包,字段类型如下:

类型

描述

AutoField

自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性。

BooleanField

布尔字段,值为True或False。

NullBooleanField

支持Null、True、False三种值。

CharField(max_length=最大长度)

字符串。参数max_length表示最大字符个数。

TextField

大文本字段,一般超过4000个字符时使用。

IntegerField

整数

DecimalField(max_digits=None, decimal_places=None)

十进制浮点数。参数max_digits表示总位数。参数decimal_places表示小数位数。

FloatField

浮点数。参数同上(没有DeciamlField精确)

DateField([auto_now=False, auto_now_add=False])

日期。

1)参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false。

2) 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false。

3)参数auto_now_add和auto_now是相互排斥的,组合将会发生错误。

TimeField

时间,参数同DateField。

DateTimeField

日期时间,参数同DateField。

FileField

上传文件字段。

ImageField

继承于FileField,对上传的内容进行校验,确保是有效的图片。

有的字段比如,性别这个属性只能男或女,可以使用 SmallIntergerField字段.

class UserInfo(models.Model):
    # 有序字典
    GENDER_CHOICES = (
        (0, "male"),
        (1, "female")
    )
    gender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0, verbose_name="性别")

 

2.2选项

通过选项实现对字段的约束,选项如下:

选项名

描述

default

默认值。设置默认值。

primary_key

若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用。

unique

如果为True, 这个字段在表中必须有唯一值,默认值是False。

db_index

若值为True, 则在表中会为此字段创建索引,默认值是False。

db_column

字段的名称,如果未指定,则使用属性的名称。如果指定了,则生成表的时候,字段名就是设置的名字

null

如果为True,表示允许为空,默认值是False。

blank

如果为True,则该字段允许为空白,默认值是False。

 

对比:null是数据库范畴的概念,blank是后台管理页面表单验证范畴的。

经验:

当修改模型类之后,如果添加的选项不影响表的结构,则不需要重新做迁移,商品的选项中defaultblank不影响表结构。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是那个同伟伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值