Django常用字段类型示例
Django 常用字段类型示例
1.CharField()
与关系数据库中的CHAR相似,可以存储固定长度字符串
代码:
CharField = models.CharField(max_length=30,name="Char Field")
后台结果:
2.TextField()
与关系数据库中的TEXT类似,可以存储大量字符串
代码:
TextField = models.TextField(name="Text Field")
后台结果:
3.IntegerField()
与关系数据库中的Integer类似,用于存储整形
代码:
IntegerField = models.IntegerField(name= "Integer Field")
后台结果:
4.DecimalField()
与关系数据库中的Float类似,用于存储小数,有两个参数max_digits(最大位数,不包括小数点和符号),decimal_places(小数数位数)
代码:
DecimalField = models.DecimalField(max_digits=10,decimal_places=3,name="Decimal Field")
后台结果:
5.EmailField()
存储邮箱地址,CharField的一种,会自动检验邮箱合法性
代码:
EmailField = models.EmailField(name="Email Field")
后台结果:
6.DateField(),DateTimeField()
与关系数据库中的DATE和DATETIME类似,存储时间的格式不同,有三个参数,
default(默认值,第一次创建这个字段的时候都要给默认值,可以用django.utils.timezone.now 赋值当前时间),auto_now(自动保存时间,设定了这个参数就不用自己设置时间,一般用于记录上次修改时间),auto_now_add(用于记录数据创建的时间)
代码:
DateField = models.DateField(auto_now=False,name="Date Field")
DateTimeField = models.DateTimeField(auto_now_add=False,name = "Date Time Field")
后台结果:
DateField():
DateTimeField():
6.BooleanField()
布尔字段,True or False,default(默认值,如果不定义默认值会在执行迁移的时候要求输入默认值)。
可用于对数据进行逻辑删除。
代码:
BooleanField = models.BooleanField(default=False,name="Boolean Field")
后台结果:
7.FileField(),ImageField()
前者是文件字段,用于上传文件,upload_to(上传文件存放路径,注意是相对路径),default(用于上传的文件默认名)
后者是图片字段,用于上传图片,会自动检验图片文件的合法性,有四个参数:upload_to(同FileField()),default(同FileField()),height_field(获取图片的高),width_field(获取图片的宽)
代码:
FileField = models.FileField(default="default.txt",upload_to="uploads",name="File Field")
ImageField = models.ImageField(default="default.png",height_field=None,width_field=None,upload_to="uploads",name="Image Field")
后台结果:
8.ForeignKey()
外键,用于引用其他的已有model作为外键使用,类似于关系数据库中的外键,第一个参数传入作为外键的model类,另一个参数on_delete一般赋值models.DO_NOTHING,这使得在删除该条数据的时候不会删除外键对应的数据。下面以博客类Blog和博客类型类BlogType做例子:
代码:
class BlogType(models.Model):
type_name = models.CharField(max_length=30,verbose_name="博客类型")
def __str__(self):
return self.type_name
class Blog(models.Model):
title = models.CharField(max_length=40,verbose_name="标题")
blog_type = models.ForeignKey(BlogType, on_delete=models.DO_NOTHING, verbose_name="博客类型")
# 这里的User类是django自带的,导入superuser作为用户名,需要import django.contrib.auth.models
author = models.ForeignKey(User,on_delete=models.DO_NOTHING,verbose_name="作者")
content = models.TextField(verbose_name="内容")
created_time = models.DateTimeField(auto_now_add=True,verbose_name="创建时间")
last_modified_time = models.DateTimeField(auto_now=True,verbose_name="上次修改时间")
def __str__(self):
return "<Blog:%s>" % self.title
后台结果:
可以看到博客类型这里引用了外键,需要先创建博客类型,才能在博客这里进行选择。
这里我还用了另外一个外键作者,可以通过添加 from django.contrib.auth.models import User,将User作为model类传给外键,就能自动获取到
Tips: 细心的人可能发现了我ForeignKey这个例子里字段名称显示都是中文的,这也有利于我们的阅读习惯,这个可以通过给每个字段初始化的时候添加verbose_name来实现
附:测试代码
后续使用到其他字段会继续更新…