Django之Model操作建表流程【ORM篇二】

版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/Burgess_zheng/article/details/86564701

上一篇:Django之Model操作切换连接MySQL数据库(默认连接django自带是sqlite3数据库)【ORM篇一】https://blog.csdn.net/Burgess_zheng/article/details/86564137

目录


建表流程

实战之Django之Model建表流程 https://blog.csdn.net/Burgess_zheng/article/details/86564984

建表流程
1.创建一个app
2.创建完APP需要在settings下进行注册
3.在app下的model.py文件进行建表操作
4.项目下执行命令进行把表创建进数据库

我们这里就先创建两张表,一种是UserInfo列表 一张是UserGroup表
并且UserInfo需要一个字段设置foreign key关联UserGroup的主键
我们占时不进行任何操作(后面陆续会有操作和参数汇总),只需要建表的流程即可

    1.django创建app

j进入Django项目的目录下:
python manage.py startapp app_name  #可创建N个app ,app_name自定义app名称

    2.settings进行注册APP

路径:project_name/project_name/settings.py

#####APP注册#####
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app_name',
]

    3.创建类(继承)和字段

路径:project/app/models.py

from django.db import models

#UserGroup(组表)
class UserGroup(models.Model):
    uid = models.AutoField(primary_key=True)
    #创建一个自增的列(主键)如果不写:默认是也有自增列,该列的字段名:id
    caption = models.CharField(max_length=32)
    ctime = models.DateTimeField(auto_now_add=True,null=True)
    #auto_now_add=True 创建数据的时候,该列不用加,自动生成当前时间
    uptime = models.DateTimeField(auto_now=True, null=True)
    #auto_now 更新数据的时候该列自动生成更改的当前时间
    #但是下面这种更改数据,auto_now该列还是不会生效

#UserInfo(用户表)
class UserInfo(models.Model): #默认字段字段ID 且是主键
    username =models.CharField(max_length=32,blank=True,verbose_name='用户名')
        # 用户名列,字符串类型,指定长度32字符
        #(如果是数字类型models.IntergerFiled无需指定长度,否则报错)
    password = models.CharField(max_length=60,editable=False)
    # 密码名列,字符串类型,指定长度64字符
    email = models.CharField(max_length=60,help_text='邮箱')
    test = models.EmailField(max_length=19,null=True)
    #只支持邮箱格式(django的admin有效)
    #test = models.URLField(max_length=19, null=True)
    #只支持URL格式(django的admin有效)
    #test = models.GenericIPAddressField(max_length=19, null=True)
    #只支持IPV4和IPV6格式
    #gender = models.CharField(max_length=60,null=True)
    user_type_choices = (#变量=元组嵌套元组,是存放在内存里面的
    (1,'超级用户'),
    (2,'普通用户'),
    (3,'普普通通用户'),
     )
    user_type_id = models.IntegerField(choices=user_type_choices,default=1)
    #该字段引用了上面的嵌套元组   IntegerField:数字类型,默认值都是1超级用户

    user_group = models.ForeignKey("UserGroup",to_field='uid',default=1,on_delete=models.CASCADE)
        #该字段UserGroup表的主键uid进行关联   to_field='uid'不写默认就是关联UserGroup表的主键 
        #只要是外键的字段,我们数据库生产表的时候,字段名字会自动变 user_group_id
        #user_group_id  该字段作用:查询UserInfo表的该字段的值
        #user_group  该字段作用:UserInfo表每行数据外键所关联UserGroup的主)的数据可被查询

    4.在创建该表并且存放到数据库

#Terminal 终端操作(cd project 进入该project目录)
python manage.py makemigrations    #创建表结构
python manage.py migrate           #表写入进入数据库
#默认写入django自带的sqlite,如要链接mysql请在setting进行定义

上一篇:Django之Model操作切换连接MySQL数据库(默认连接django自带是sqlite3数据库)【ORM篇一】https://blog.csdn.net/Burgess_zheng/article/details/86564137

猜你喜欢

转载自blog.csdn.net/Burgess_zheng/article/details/86564701
今日推荐