ORM操作之Django后台管理、外键、QuerySet、查询sql语句、用户管理
ORM操作
Django后台管理
-
app02的admin.py
from django.contrib import admin from app02 import models # Register your models here. admin.site.register(models.UserInfo)
-
app02的models.py
from django.db import models # Create your models here. # 创建的数据库表单名:app02_userinfo class UserInfo(models.Model): # 默认创建ID列,自增, 主键 # 用户名列,字符串类型,指定长度 # 字符串、数字、时间、二进制 username = models.CharField(max_length=64) password = models.CharField(max_length=64) email = models.EmailField(max_length=64, null=True)
-
工程同名目录的urls.py(默认存在)
url(r'^admin/', admin.site.urls),
-
命令行创建后台管理管理员账号、密码
python manage.py createsuperuser
外键
实现表关联,即一种约束,字段为ForeignKey,关联唯一键
app的models.py
class UserInfo(models.Model):
# 默认创建ID列,自增, 主键
# 用户名列,字符串类型,指定长度
# 字符串、数字、时间、二进制
username = models.CharField(max_length=64)
password = models.CharField(max_length=64)
email = models.EmailField(max_length=64, null=True)
# 参数to_field为主键,可以不写,默认也是连接主键
user_group = models.ForeignKey("UserGroup", to_field="uid")
class UserGroup(models.Model):
uid = models.AutoField(primary_key=True) # 主键
caption = models.CharField(max_length=32)
执行数据库表操作后,表app02_userinfo中多一列user_group_id,而且是数字类型
user_info.html
<span>{{ row.user_group.caption }}</span>
-
一对多
方式一: 需要两次数据库操作 app的views.py models.UserInfo.objects.create( username='Spring1', password='123', email='springcom', user_group=models.UserGroup.objects.filter(uid=1).first() ) 方式二:(推荐) app的views.py models.UserInfo.objects.create( username='Spring', password='123', email='spring@163.com', user_group_id=1 )
QuerySet
可以理解成列表,每一个元素是一个对象,对象中封装着对象的特征,可以通过点的方式操作;对象可以嵌套
user_list = models.UserInfo.objects.all()
print(user_list)
<QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: Use
rInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>]>
查询sql语句
user_list = models.UserInfo.objects.all()
print(user_list.query)
SELECT "app02_userinfo"."id", "app02_userinfo"."username", "app02_userinfo"."password", "app02_userinfo"."email", "app02_userinfo"."user_grou
p_id", "app02_userinfo"."user_type_id" FROM "app02_userinfo"
用户管理(课上练习)
- 用户组的增删改查
- 用户的增删改查
- 添加必须是模态对话框
- 删除必须是模态对话框
- 修改,必须显示默认值
- 比较好看的页面