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

  • http://127.0.0.1:8000/admin/

外键

实现表关联,即一种约束,字段为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"

用户管理(课上练习)

  1. 用户组的增删改查
  2. 用户的增删改查
    1. 添加必须是模态对话框
    2. 删除必须是模态对话框
    3. 修改,必须显示默认值
  3. 比较好看的页面
posted @ 2017-12-25 23:16  12兵哥哥  阅读(917)  评论(0编辑  收藏  举报