Django 梳理

Django   模型

模型里的类  == 数据库里的表

orm 系统  对象关系映射 

ORM概念:对象关系映射(Object Relational Mapping 简称ORM)
ORM的优势:不用直接编写SQL代码,只需要像操作对象一样从数据库操作数据。

1、链接数据库:

setting:DATABASE配置 

__init__:pymysql配置 

2、创建模型 要先继承 models.Model

然后设置 字段,属性:

id = models.AutoField(primary_key=True)    #可以省略不写 继承的父类里有 表示ID字段自增长
name = models.CharField(max_length=30)     #表示创建name是字符类型最大值是30
age =  models.IntegerField()               #表示创建age是整型
name = models.CharField(max_length=30,unique=True) #设置name字段并且定义为唯一键。
age = models.IntegerField()
note = models.TextField()
gender = models.BooleanField(default=True) #因为BooleanField 只有两个值 true和false 两个值 设置默认值为True 那么默认值也就是1
create_time = models.DateField(auto_now_add=True)  #这个是日期类型,没有时间 第一次添加数据进去,都会将当前时间设置进去。当以后修改条数据其他字段时,不会修改这个值
uqdate_time = models.DateTimeField(auto_now=True) #日期时间类 每次修改都会将当前时间更新进去。

字段的约束:除了上面提到的 还有些 外键 主键 非空 唯一等等。

表关系:

student = models.ManyToManyField('Student') 
#表中多对多关系
s_id = models.OneToOneField('Student',on_delete=models.CASCADE)   
#数据库一对一关联
department = models.ForeignKey('Department',on_delete=models.CASCADE) 
#当 Department有数据删除时那么关联的相关数据也会删除

#如果模型I有一个ForeignKey,那么该ForeignKey 所指的模型II实例可以通过一个管理器回前面有ForeignKey的模型I的所有实例。默认情况下,这个管理器的名字为foo_set,其中foo 是源模型的小写名称 可以在定义时设置related_name 参数来覆盖foo_set 的名称.
        
def __str__(self):
    return 'Student<s_id=%s,s_name=%s,department=%s>' % (self.s_id, self.s_name, self.department_id)
 #输出格式 进行优化

 

创建好Django的模型类,将模型类映射到数据库:
1、首先执行以下命令,要创建映射文件
python manage.py makemigrations
2、执行以下命令将映射文件中的映射数据提交到数据库中
python manage.py migrate

 

创建一个管理员用户taka账号,密码为liugang;
CREATE USER 'taka'@'%'IDENTIFIED BY 'liugang';
给这个用户授予所有远程访问,这个用户主要用于管理整个数据库,备份,还原等操作。
GRANT ALL ON * * TO 'taka'@'%';
是授权立即生效
FLUSH PRIVILEGES;

4、数据表操作

插入数据
#方法一:
lg = User1(name='liugang',age=21)
lg.save()       #传入数据库中
return HttpResponse('插入数据成功')
#方法二:
xly = User1()
xly.name = 'xve'
xly.age = 22
xly.save()
return HttpResponse('插入数据成!!!!')
#方法三:
create()
#方法四:
get_or_create()

查询 
filter()   返回是queryset 类型
all()      返回是queryset 类型
get() 返回的类型是单个实例对象 但是必须保证满足条件的只有一个对象

修改
1.先查到,属性赋值修改,save()
2.update

删除
delete()
以上是普通数据库表的操作,接下来是关系表中的数据操作 需要管理器 : 一对多 and 多对多
只要是多的那一头才有的属性方法  
增:add()  create()
改:remove()  add()
删:remove()  ***clear()清空

表关联对象的访问
student.department 只有在我们的Student模型类里面用了外键,department属性可以直接访问。
department.student_set 反向查询 

视图函数 views.py 可以自己定义类或者在原有的类上面进行修改
from django.shortcuts import render,redirect,reverse
# Create your views here.
from django.views import View
class Test_Department(View):
    def get(self,request):
        return render(request,'book_loog/index.html')
在 url 文件里配置上
from django.urls import path
from . import views_test
urlpatterns = [
    path('cls/',views_test.Test_Department.as_view(),name='test'),
]

return HttpResponse('完结 萨斯给 ')

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值