实现一对多表查询功能

项目代码:

models.py

from django.db import models# Create your models here.class Classes(models.Model):"""班级表,男"""titile = models.CharField(max_length=32)m = models.ManyToManyField("Teachers")class Teachers(models.Model):"""老师表,女"""name = models.CharField (max_length=32)"""
cid_id  tid_id1    11    26    11000  1000
"""
# class C2T(models.Model):
#     cid = models.ForeignKey(Classes)
#     tid = models.ForeignKey(Teachers)class Student(models.Model):username = models.CharField(max_length=32)age = models.IntegerField()gender = models.BooleanField()cs = models.ForeignKey(Classes)

urls.py

"""django_one URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/1.10/topics/http/urls/
Examples:
Function views1. Add an import:  from my_app import views2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views1. Add an import:  from other_app.views import Home2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.conf.urls import url, include2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin
from app01.views import classes
from app01.views import studentsurlpatterns = [url(r'^admin/', admin.site.urls),url(r'^get_classes.html$', classes.get_classes),url(r'^add_classes.html$', classes.add_classes),url(r'^del_classes.html$', classes.del_classes),url(r'^edit_classes.html$', classes.edit_classes),    url(r'^get_students.html$', students.get_students),url(r'^add_students.html$', students.add_students),url(r'^del_students.html$', students.del_students),url(r'^edit_students.html$', students.edit_students),

]

students.py

from django.shortcuts import render
from django.shortcuts import redirect
from app01 import modelsdef get_students(request):stu_list = models.Student.objects.all()# for i in stu_list:#     print(i.id,i.username,i.age,i.cs.id,i.cs.titile)return render(request,'get_students.html',{'stu_list':stu_list})def add_students(request):if request.method == 'GET':cs_list = models.Classes.objects.all()return render(request, 'add_students.html', {'cs_list': cs_list})elif request.method == 'POST':u = request.POST.get('username')a = request.POST.get('age')g = request.POST.get('gender')c = request.POST.get('cs')models.Student.objects.create(username=u,age=a,gender=g,cs_id=c,)return redirect('/get_students.html')def del_students(request):nid = request.GET.get('nid')models.Student.objects.filter(id=nid).delete()return redirect('get_students.html')def edit_students(request):if request.method == "GET":nid = request.GET.get('nid')obj = models.Student.objects.filter(id=nid).first()cls_list = models.Classes.objects.all()return render(request, 'edit_students.html',{'obj': obj,'cls_list': cls_list})elif request.method == "POST":u = request.GET.get('username')a = request.GET.get('age')g = request.GET.get('gender')c = request.GET.get('cs')models.Student.objects.filter(nid=id).update(username=u,age=a,gender=g,cs_id=c,)return redirect('/get_students.html')

get_students.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div><a href="/add_students.html">添加</a>
</div>
<div><table border="1"><thead><tr><th>ID</th><th>姓名</th><th>年龄</th><th>性别</th><th>班级</th><th>操作</th></tr></thead><tbody>{% for row in stu_list %}<tr><td>{{ row.id }}</td><td>{{ row.username }}</td><td>{{ row.age }}</td>{% if row.gender %}<td>男</td>{% else %}<td>女</td>{% endif %}<td>{{ row.cs.titile }}</td><td><a href="/del_students.html?nid={{ row.id }}">删除</a>|<a href="/edit_students.html?nid={{ row.id }}">编辑</a></td></tr>{% endfor %}</tbody></table>
</div>
</body>
</html>

add_students.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h3>添加用户</h3>
<form action="/add_students.html" method="POST">{% csrf_token %}<p><input type="text" name="username" placeholder="用户名" /></p><p><input type="text" name="age" placeholder="年龄" /></p><p>男:<input type="radio" name="gender" value="1" />女:<input type="radio" name="gender" value="0" /></p><p><select name="cs">{% for foo in cs_list %}<option value="{{ foo.id }}">{{ foo.titile }}</option>{% endfor %}</select></p><input type="submit" value="提交">
</form>
</body>
</html>

edit_students.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="/edit_students.html" method="POST">{% csrf_token %}<p><input type="text" name="username" placeholder="用户名" value="{{ obj.username }}"/></p><p><input type="text" name="age" placeholder="年龄" value="{{ obj.age }}"/></p><p>{% if obj.gender %}男:<input type="radio" name="gender" value="1" checked/>女:<input type="radio" name="gender" value="0"/>{% else %}男:<input type="radio" name="gender" value="1"/>女:<input type="radio" name="gender" value="0" checked/>{% endif %}</p><p><select name="cs">{% for foo in cls_list %}{% if obj.cs_id == foo.id %}<option value="{{ foo.id }}" selected>{{ foo.titile }}</option>{% else %}<option value="{{ foo.id }}">{{ foo.titile }}</option>{% endif %}{% endfor %}{</select></p><input type="submit" value="提交">
</form>
</body>
</html>

转载于:https://www.cnblogs.com/nulige/p/6534403.html

django一对多 增 删 改 查相关推荐

  1. 表单的增 删 改 查

    django单表操作 增 删 改 查 一.实现:增.删.改.查 1.获取所有数据显示在页面上 model.Classes.object.all(),拿到数据后,渲染给前端;前端通过for循环的方式,取 ...

  2. properties(map)增.删.改.查.遍历

    import java.util.Map; import java.util.Properties; import java.util.Set;/*** properties(map)增.删.改.查. ...

  3. python学生姓名添加删除_python-函数-实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统。...

    实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统. 要求1:使用一个list用于保存学生的姓名. 要求2:输入0显示所有学员信息,1代表增加,2代表删除,3代表修改,4代表查询,exit ...

  4. PySpark︱DataFrame操作指南:增/删/改/查/合并/统计与数据处理

    笔者最近需要使用pyspark进行数据整理,于是乎给自己整理一份使用指南.pyspark.dataframe跟pandas的差别还是挺大的. 文章目录 1.-------- 查 -------- -- ...

  5. list 增 删 改 查 及 公共方法

    1 # 热身题目:增加名字,并且按q(不论大小写)退出程序 2 li = ['taibai','alex','wusir','egon','女神'] 3 while 1: 4 username = i ...

  6. 简单的php数据库操作类代码(增,删,改,查)

    数据库操纵基本流程为: 1.连接数据库服务器 2.选择数据库 3.执行SQL语句 4.处理结果集 5.打印操作信息 其中用到的相关函数有 •resource mysql_connect ( [stri ...

  7. pyRedis - 操作指南:增/删/改/查、管道与发布订阅功能

    文章目录 1 redis docker 部署与安装 2 py - redis的使用 2.1 redis的连接 2.2 常规属性查看 2.2.2 关于删除 2.3 STRING 字符串的操作 2.4 H ...

  8. Linux技术--mysql数据库增-删-改-查

    # mysql 数据库 ## 数据库的操作 ### 五个单位 * 数据库服务器   Linux或者 windows  * 数据库  * 数据表 * 数据字段 * 数据行 ### 连接数据库 ``` 1 ...

  9. Python 操作 Elasticsearch 实现 增 删 改 查

    Github 地址:https://github.com/elastic/elasticsearch-py/blob/master/docs/index.rst 官网地址:https://elasti ...

最新文章

  1. 指针的本质是:内存(地址)+ 类型 装包解包
  2. python django框架 比php_ThinkPHP, Django这两个框架孰优孰略,忽略语言本身?
  3. 【Python】Python入门-列表初相识
  4. C# WebProxy POST 或者 GET
  5. Android学习记录1--布局的类型
  6. mac用vscode打开html,Mac 命令行打开VsCode
  7. 关于 php mysql pdo cannot find driver 解决方案
  8. UnityShader9.1:光照基础实例
  9. 字体图标,web页面常用图标
  10. Ubuntu14.04安装wineqq国际版
  11. python 基于百度aip库 实现识别图片中的文字
  12. 你玩过轻量系统软总线应用吗?
  13. 鼠标光标一直在闪烁_便携有个性,功能强大,可配戴在手指上的键盘鼠标
  14. 如何从Google迁移到Amazon应用内购买
  15. GS1条形码为什么那么贵?有什么便宜的办法吗?
  16. 解决VMmare虚拟机安装过程没有权限问题
  17. 计算机专业国外访学进修目的,浙江师范大学关于2012年度专业技术职务评审工作的实施意见...
  18. Exception: Please add mujoco library to your PATH:set PATH=C:\User\*\ .mujoco\mujoco200\bin;%PAT
  19. 存货账龄分析报表(下)
  20. CAD手机看图软件中怎么将CAD图纸转为PDF/图片格式?

热门文章

  1. 北京网信金服PHP薪资_2020互联网大厂薪资曝光:程序员薪资将会变成白菜价?...
  2. 为热门项目 若依(ruoyi) 添加flyway,自动管理数据库版本
  3. CentOS8设置桥接网络模式,并配置静态IP及外网访问
  4. 图解CSS中padding、margin、border的区别及使用
  5. springboot项目解决跨域的几种方式
  6. java多线程学习系列
  7. Linux 3.13.0删除了Netlink API函数genl_register_ops() / genl_unregister_ops()
  8. C++ main函数中参数argc和argv相关定义与研究
  9. 实用typescript_TypeScript 泛型使用2-常见的工具类型
  10. std::atomic_thread_fence