• 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. 比较好看的页面
  • 相关阅读:
    【class2src】Decompiler
    【JAVA-JDT-AST】Java抽象语法树的构建、遍历及转成dot格式(附Github源码)
    【IBM-WALA】Step by Step : use WALA to generate System Dependency Graph PDF and Dot File (Mac)
    [R]统计工具包
    [PYTHON-TSNE]可视化Word Vector
    【Latex】常用工具包
    [Python]编程之美
    【python】用python生成pdf文件
    【python】并查集
    【Scikit】实现Multi-label text classification代码模板
  • 原文地址:https://www.cnblogs.com/todayisafineday/p/8111718.html
Copyright © 2020-2023  润新知