学员管理示例——为班级分配老师(多对多)

一、set_teachers.py文件

from django.shortcuts import render,redirect
from app01 import models

def set_teachers(request):
    if request.method == "GET":
        nid = request.GET.get("nid")  # 获取后可继续传给HTML文件
        cls_obj = models.Classes.objects.filter(id=nid).first()
        cls_teachers_list = cls_obj.c_to_t.all().values_list("id")
        # 2、先用value_list取出,再用zip函数
        id_list = list(zip(*cls_teachers_list))[0] if list(zip(*cls_teachers_list)) else []
        # 如果if list(zip(*cls_teachers_list))不为空则执行if前语句,为空时执行else语句

        all_teachers_list = models.Teachers.objects.all()
        # [obj,obj,obj]

        # 1、可以直接用Queryset类型里对象判断
        # for i in all_teachers_list:
        #     if i in cls_teachers_list

        return render(request,"set_teachers.html",{
            "cls_teachers_list": cls_teachers_list,
            "all_teachers_list": all_teachers_list,
            "id_list":id_list,
            "nid":nid
        })
    elif request.method == "POST":
        nid = request.GET.get("nid")
        ids = request.POST.getlist("teacher_ids")   # 获取多个值
        obj = models.Classes.objects.filter(id=nid).first()
        obj.c_to_t.set(ids)   # 重置
        return redirect("/classes.html")

  

二、HTML文件操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/set_teachers.html?nid={{nid}}" method="POST">
    {% csrf_token %}
    <select name="teacher_ids" id="" multiple size="10">   {# 设置为多选和大小 #}
        {% for item in all_teachers_list %}   {# 列出所有老师,并通过if判断来默认选择 #}
            {% if item.id in id_list  %}
                <option value="{{item.id}}" selected="selected">{{item.name}}</option>
            {% else %}
                <option value="{{item.id}}" >{{item.name}}</option>
            {% endif %}
        {% endfor %}
    </select>
    <input type="submit" value="提交">
</form>
</body>
</html>

三、展示的HTML中代码

<td>
    {% for item in row.c_to_t.all %}  {# 执行函数不用加括号,自动加 #}
        <span>{{item.name}}</span>
    {% endfor %}
</td>

  

总结:

  关键点在于值的传送与获取,一般传ID,因为其唯一性

原文地址:https://www.cnblogs.com/Lujun1028/p/9577492.html

时间: 2024-11-11 10:08:25

学员管理示例——为班级分配老师(多对多)的相关文章

学员管理示例:班级管理

原文地址:https://www.cnblogs.com/jintian/p/11167434.html

学员管理示例——班级管理(单表操作)

一.新建views文件夹 1.新建views文件夹目的:给不同管理的操作分类,比如班级操作归为一类.     2.必须删除原来的views,以免路径搜索不到新建views文件夹 3.创建classes.py文件 二.操作流程(URL -> 函数 -> HTML文件 -> URL) URL路由 from django.contrib import admin from django.urls import re_path from app01.views import classes #

学员管理示例:学员管理

url+?+数据 get方式发送 input标签:placeholder=" "   显示在文本框内 {% csrf_token %}  针对post方式发送,要加在html文件内,否则会报错 原文地址:https://www.cnblogs.com/jintian/p/11167447.html

学员管理示例:数据库设计

原文地址:https://www.cnblogs.com/jintian/p/11167429.html

学员管理

//有表单验证, 表格格式 , 启动项, 回馈, 增删改查. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv=

垃圾回收GC:.Net自动内存管理 上(一)内存分配

垃圾回收GC:.Net自动内存管理 上(一)内存分配 前言 .Net下的GC完全解决了开发者跟踪内存使用以及控制释放内存的窘态.然而,你或许想要理解GC是怎么工作的.此系列文章中将会解释内存资源是怎么被合理分配及管理的,并包含非常详细的内在算法描述.同时,还将讨论GC的内存清理流程及什么时清理,怎么样强制清理. 引子 为你的应用程序实现合理的资源管理是一件困难的,乏味的工作.这可能会把你的注意力从你当前正在解决的实际问题中转移到它身上.那么,如果有一个现有的机制为开发者管理令人厌恶的内存管理,会

SSRS 2012 表达式 -- 颜色管理示例

SSRS 2012 表达式 -- 颜色管理示例 我们要将月销售量低于100笔的数据格,利用单元格底色以及字型的属性变更,以提醒查看报表者注意. 步骤1: 将要改变底色的单元格反白,并在右下角的属性窗口中选择BackgroundColor属性,并在下拉菜单中选择"Expression". 步骤2: 接着,在编辑表达式窗口上方方框内输入: =iif(Sum(Fields!SALES_QTY.Value)<100 and IsNothing(Sum(Fields!SALES_QTY.V

LMT-LicManager许可证管理系统对license的分配调度

 LMT-LicManager许可证管理系统对license的分配调度 管理是一项很能反映资源分配本质的过程. 从生产经营活动的整个流程来说,人.财,物的消耗和增值贯穿始终.俗话说吃不穷,穿不穷,算计不到就是穷.以财务为主线的资源分配是管理的主体.小到家庭理财,大到企业规划,无一离不开计划. 在企业信息化管理领域也是一样,就拿大型企业的license server管理来说,软件的license server很多,每一类浮点license都涉及一个不同的license server,由于保证稳定安

垃圾回收GC:.Net自己主动内存管理 上(一)内存分配

垃圾回收GC:.Net自己主动内存管理 上(一)内存分配 垃圾回收GC:.Net自己主动内存管理 上(一)内存分配 垃圾回收GC:.Net自己主动内存管理 上(二)内存算法 垃圾回收GC:.Net自己主动内存管理 上(三)终结器 前言 .Net下的GC全然攻克了开发人员跟踪内存使用以及控制释放内存的窘态.然而,你也许想要理解GC是怎么工作的.此系列文章中将会解释内存资源是怎么被合理分配及管理的,并包括很具体的内在算法描写叙述. 同一时候,还将讨论GC的内存清理流程及什么时清理.怎么样强制清理.