• django基础——models数据库操作


    model.py是创建项目时生成的框架文件,默认导入了models的模块。具体解释和使用方法,如下

    from django.db import models
    
    # Create your models here.
    class Nav(models.Model):  #类名即表名
        name=models.CharField(max_length=10,unique=True,verbose_name='导航名称')   
        #创建一个字段,name.CharField指字符串类型,max_length,长度,必须要加,name指字段名,unique=True不能重复,null=True:表示可以为空,默认不能为空
        is_delete=models.SmallIntegerField(default=1,verbose_name='是否被删除')
        #逻辑删除,SmallIntegerField短int型,int型不加max_length,例如展示性别是可以使用
        # sex_coice=((0,'男'),(1,'女'))
        # sex=models.SmallIntegerField(choices=sex_coice,verbose_name='性别')     #枚举类型
        create_time=models.DateTimeField(verbose_name='创建时间',auto_now_add=True)
        # auto_now_add,只要插入数据,就会自动设为当前时间,只要时间类型可以加这种参数
        update_time = models.DateTimeField(verbose_name='修改时间', auto_now=True)
        # auto_now = True,修改数据时,时间会自动变
    
        def __str__(self): #不加__str__查询结果是对象,加上之后返回结果是字符串,我们可以使用这些数据
            return self.name
        class Meta:     #名字固定
            verbose_name='导航表'
            verbose_name_plural=verbose_name
            db_table='nav'   #默认表名是appname+类名,db_table相当于重命名
            ordering=['create_time']   #查询数据时,默认按照哪个字段来排序,不排序的话可以注释掉
    
    class Article(models.Model):
        title = models.CharField(max_length=20, verbose_name='文章名称')
        content = models.TextField( verbose_name='文章内容')   #内容较长时用TextField,不需要加max_length
        img = models.ImageField( upload_to='article_img',verbose_name='文章图片',null=True)    #图片类型
        # ImageField使用前必须装pip install Pillow
        #upload_to='XXXX'上传到指定路径下,必须存在
        is_delete = models.SmallIntegerField(default=1, verbose_name='是否被删除')
        nav=models.ForeignKey(Nav,verbose_name='导航id',on_delete=models.DO_NOTHING,db_constraint=False)
        #db_constraint=False 不会真正建立外键,删除数据时没有实际关联
        #外键,这个字段的值从另一个表取值,on_delete=models.DO_NOTHING  必须存在,指对应字段值被删,这个字段不受影响,
        create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
        update_time = models.DateTimeField(verbose_name='修改时间', auto_now=True)
        def __str__(self):   #    不写这个默认返回的是个对象
            return self.title
        class Meta:
            db_table='article'   #默认表名是appname+类名,db_table相当于重命名
            ordering=['id']   #默认按照某个字段排序,从小到大排序。“-id”:从大到小

     当变更表结构时,需要执行命令才能生效

    python manage.py makemigrations #产生迁移数据库的代码
    python manage.py migrate #同步到数据库

  • 相关阅读:
    怀念
    红颜知己
    我的孩子们
    10月22日
    Movies
    vue返回上一页效果(this.$router.go、)
    Java随笔
    Java随笔
    java随笔
    java随笔
  • 原文地址:https://www.cnblogs.com/hancece/p/11721382.html
Copyright © 2020-2023  润新知