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 #同步到数据库

猜你喜欢

转载自www.cnblogs.com/hancece/p/11721382.html