Django 模型定义

模型定义用于定义表字段的类型,长度,是否必填,默认值等等,可理解为表结构定义。一般都是在models.py中定义,在myweb\web中编辑models.py如下:


from django.db import models


#任务表

class Tasks(models.Model):

    task_name = models.CharField('任务名称', max_length=100)

    task_user = models.CharField('操作者', max_length=20)

    task_describe = models.TextField('任务描述', max_length=2000, default='')

    task_start_date = models.DateField('开始日期', auto_now_add=True)

    task_end_date = models.DateField('结束日期', auto_now_add=True)

    task_result = models.TextField('任务评价', max_length=2000,default='')



    class Meta:

        verbose_name = '任务表'

        verbose_name_plural = "任务表"



所有的模型定义都继承models.Model,所以先from django.db import models然后定义一个Tasks的模型并继承models,class Tasks(models.Model),给模型定义一些业务字段。

models.CharField('任务名称', max_length=100)中的'任务名称'是verbose_name,也可以这样写models.CharField(verbose_name='任务名称', max_length=100),这样写的好处是在后台将显示中文'任务名称',否则会显示task_name。


同样模型定义时,加入class Meta,即可在后台页面中显示中文:任务表,否则显示模型类名:Tasks。


字段的常见类型有:

类型

说明

AutoField

一个自动增加的整数类型字段。如果没有定义,Django会自动添加字段:id = models.AutoField(primary_key=True),这是一个自增字段,从1开始计数。

BigAutoField

64位整数类型自增字段,数字范围更大,从19223372036854775807

BigIntegerField

64位整数字段,类似IntegerField-9223372036854775808 9223372036854775807。在Django的模板表单里体现为一个textinput标签。

BooleanField

布尔值类型。默认值是None。在HTML表单中体现为CheckboxInput标签。如果要接收null值,请使用NullBooleanField

CharField

字符串类型。必须接收一个max_length参数,表示字符串长度不能超过该值。最常用的filed

CommaSeparatedIntegerField

逗号分隔的整数类型。必须接收一个max_length参数。常用于表示较大的金额数目,例如1,000,000元。

DateField

class DateField(auto_now=False,   auto_now_add=False, **options)日期类型。一个Python中的datetime.date的实例。两个重要参数:(参数互斥,不能共存)auto_now:每当对象被保存时将字段设为当前日期,常用于保存最后修改时间。auto_now_add:每当对象被创建时,设为当前日期,常用于保存创建日期(注意,它是不可修改的)。设置上面两个参数就相当于给field添加了editable=Falseblank=True属性。如果想具有修改属性,请用default参数。例子:pub_time = models.DateField(auto_now_add=True),自动添加发布时间。

DateTimeField

日期时间类型。DateField相比就是多了小时、分和秒的显示,其它功能、参数、用法、默认值等等都一样。

DecimalField

固定精度的十进制小数。必须提供两个指定的参数!参数max_digits:最大的位数,必须大于或等于小数点位数 decimal_places:小数点位数,精度。 例子:储存最大不超过999,带有2位小数位精度的数,定义如下:models.DecimalField(..., max_digits=5,   decimal_places=2)

EmailField

邮箱类型,默认max_length最大长度254位。使用这个字段的好处是,可以使用DJango内置的EmailValidator进行邮箱地址合法性验证。

FileField

class FileField(upload_to=None, max_length=100,   **options)

FilePathField

文件路径类型

FloatField

浮点数类型

IntegerField

整数类型,取值范围-21474836482147483647

NullBooleanField

类似布尔字段,只不过额外允许NULL作为选项之一。

PositiveSmallIntegerField

较小的正整数字段,从032767

SmallIntegerField

小整数,包含-3276832767

TextField

大量文本内容,在HTML中表现为Textarea标签,如果你为它设置一个max_length参数,那么在前端页面中会受到输入字符数量限制,然而在模型和数据库层面却不受影响。只有CharField才能同时作用于两者。

TimeField

时间字段,Pythondatetime.time的实例。接收同DateField一样的参数,只作用于小时、分和秒。


表结构定义好后,要同步数据,意思是所有这些对模型的定义,改动,都真正的迁移到物理表(我的理解),运行命令如下:

python manage.py makemigrations

python manage.py migrate

执行完命令后,可以到数据库所在服务器查看一下,数据表是否创建了。

提示:以后所有对模型的改动,都要重新执行一次这两条命令。


该文章对你有帮助吗,求分享转发: 分享到QQ空间 分享给QQ好友

 

 

粤ICP备19116230号
友情链接: 码农藏书阁 天天链