Django学习笔记(2)-- 改变数据模型,添加数据

settings.py数据库配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',	#mysql为可更改项,修改所用数据库替换这个值即可
        'NAME': 'polls',						#数据库名,需要先创建:create databases polls;
        'USER': 'root',							#用户名
        'PASSWORD': '123456',					#密码
        'HOST': '127.0.0.1',					#主机地址
        'PORT': '3306',							#端口
    }
}

数据迁移

迁移是非常强大的功能,它能让你在开发过程中持续的改变数据库结构而不需要重新删除和创建表 - 它专注于使数据库平滑升级而不会丢失数据

1.修改models.py中模型,改变或添加数据结构(此时数据库中无数据)

  • 设计表结构
  • 在models.py中输入

2.运行 python manage.py makemigrations 为模型的改变生成迁移文件。
Django学习笔记(2)-- 改变数据模型,添加数据_第1张图片

  • 执行后在migrations目录下生成迁移文件,文件内容大致如下

    Django学习笔记(2)-- 改变数据模型,添加数据_第2张图片
    Django学习笔记(2)-- 改变数据模型,添加数据_第3张图片

  • 此时数据库中依然无新表生成

3.运行 python manage.py migrate 来应用数据库迁移。

  • 此时数据库中有新增表

迁移成功后展示
数据添加

  1. 执行python manage.py shell 进入python shell

  2. 引入包

    > from 应用名.models import 类名
    > from polls.models import Grades,Students
    > from django.utils import timezone
    > from datetime import *
    
  3. 查询所有数据

    类名.objects.all()
    
  4. 添加数据

    > 创建一个模型类的对象
    > a = 类名()
    > a.字段1 = "a1"
    > a.字段2 = "a2"
    > a.save()
    > *##注意:没有执行save(),数据不会存到数据库中,执行save()后,数据才能存到数据库中*
    

5.插入数据后查看全部数据,显示为一条数据,但无法看到具体数据
在这里插入图片描述

  • 此时需要在models.py对应类中添加一条数据
    Django学习笔记(2)-- 改变数据模型,添加数据_第4张图片
  • 添加后重启python shell,重新导入包,查看数据,此时可以看到具体数据
    在这里插入图片描述
  1. 修改数据

    >  模型对象.属性=新值    
    >  --修改完成后需要save()
      ```
    
  2. 删除数据

    > 模型数据.delete()
    > --删除后数据库中也直接删除
    
  3. 关联关系

  • 模型对象.类名_set.al()

     >>> gra1.students_set.all()
     ]>
    
  • 直接添加数据库

    stu3=gra1.students_set.create(sname=u'dada',sage=21,sgender=u'男',scontend=u'kkkkkkk')
    

定义模型

class Grades(models.Model):
    ........
    .......
    #定义数据库表名和排序 
    class Meta:
        db_table = "grades"
        ordering = ['id']  #降序排序['-id']

自定义管理Manager类

**models.py**
class StudentManager(models.Manager):
    def get_query(self):
        return super(StudentManager, self).get_query().filter(isDelete=False)

class Students(models.Model):
    stuObj = models.Manager()
    stuObj1 = StudentManager()
    .....
    ....
查询结果
   >>> Students.stuObj.all()
, , , , ]>

你可能感兴趣的:(Django学习笔记(2)-- 改变数据模型,添加数据)