Django常用字段类型示例

版权声明:资源类仅用于学习交流,禁止商用!!! https://blog.csdn.net/GentleCP/article/details/86708062

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来实现

附:测试代码
后续使用到其他字段会继续更新…

猜你喜欢

转载自blog.csdn.net/GentleCP/article/details/86708062
今日推荐