第一次写博客,只为记录自己的成长,也作为自己的笔记。
1. 首先利用django自带sqlite创建两张表
并不需要用到原生的SQL语句,我们只需要在model.py
中写两个类,之后在终端执行两个命令,Django并会自动为我们生成。
from django.db import models
#UserType表
class UserType(models.Model):
title = models.CharField(max_length=32)
#UserIfo
class UserIfo(models.Model):
name = models.CharField(max_length=64)
age = models.CharField(max_length=64)
#与UserType关联
ut = models.ForeignKey('UserType')
#写完上面连个类后在终端执行两个命令
#1. python manage.py makemigrations
#2. python manage.py migrate
写完上面连个类后在终端执行两个命令
(1). python manage.py makemigrations
(2). python manage.py migrate
2. 接下来往表中插入数据
这里要注意的是用来关联UserType表的字段,写的时候是ut,实际上Django生成了一个ut_id的int类型字段,它代表的是UserType表中一行数据
#创建数据 UserType表
models.UserType.objects.create(title='普通用户')
models.UserType.objects.create(title='黄金用户')
models.UserType.objects.create(title='牛逼用户')
models.UserType.objects.create(title='二逼用户')
models.UserType.objects.create(title='超级用户')
#创建数据 UserIfo表
models.UserIfo.objects.create(name='小帅男',age=18,ut_id=1)
models.UserIfo.objects.create(name='张琪',age=20,ut_id=2)
models.UserIfo.objects.create(name='毛剑锋',age=25,ut_id=3)
models.UserIfo.objects.create(name='田如寅',age=23,ut_id=4)
models.UserIfo.objects.create(name='冯波',age=22,ut_id=5)
models.UserIfo.objects.create(name='程凯',age=21,ut_id=4)
#获取数据
# user_list数据类型为:QuerySet
# user_list = models.UserIfo.objects.all()
# print(user_list)
# for row in user_list:
#通过关联ut字段取关联表----正向操作
#print(row.id,row.name,row.age,row.ut_id,row.ut.title)
# obj = models.UserType.objects.all().first()
# print(obj.id,obj.title)
# 可通过与之关联的表名小写(userifo)+_set,反向取与之关联的表--反向操作
# for u in obj.userifo_set.all():
# print(u.name,u.age)
#加values(),那么遍历每一个row为字典类型{'id': 1, 'name': '小帅男', 'age': '18', 'ut_id': 1}
# 这种方式不能遍历跨表,必须在获取数据时一并跨表获取,
#result=models.UserIfo.objects.all().values('name','age','ut__title')
# print(result)
# for row in result:
# print(row['name'],row['age'],row['ut__title'])
# 加values_list(),那么遍历每一个row为元组类型:(1, '小帅男', '18', 1),
# 这种方式不能遍历跨表,必须在获取数据时一并跨表获取,ut__title
# result = models.UserIfo.objects.all().values_list('name','age','ut__title')
# print(result)
# for row in result:
# print(row[0], row[1],row[2])
改:
# models.UserIfo.objects.filter(name='小帅男').update(ut_id='2') # 将指定条件的数据更新,均支持 **kwargs
# obj = models.UserIfo.objects.get(id=2)
# obj.age = '111'
# obj.save() # 修改单条数据
删:
# models.UserIfo.objects.filter(name='seven').delete() # 删除指定条件的数据
增:上面已经描述非常清楚