django一对多 增 删 改 查
实现一对多表查询功能
项目代码:
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一对多 增 删 改 查相关推荐
- 表单的增 删 改 查
django单表操作 增 删 改 查 一.实现:增.删.改.查 1.获取所有数据显示在页面上 model.Classes.object.all(),拿到数据后,渲染给前端;前端通过for循环的方式,取 ...
- properties(map)增.删.改.查.遍历
import java.util.Map; import java.util.Properties; import java.util.Set;/*** properties(map)增.删.改.查. ...
- python学生姓名添加删除_python-函数-实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统。...
实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统. 要求1:使用一个list用于保存学生的姓名. 要求2:输入0显示所有学员信息,1代表增加,2代表删除,3代表修改,4代表查询,exit ...
- PySpark︱DataFrame操作指南:增/删/改/查/合并/统计与数据处理
笔者最近需要使用pyspark进行数据整理,于是乎给自己整理一份使用指南.pyspark.dataframe跟pandas的差别还是挺大的. 文章目录 1.-------- 查 -------- -- ...
- list 增 删 改 查 及 公共方法
1 # 热身题目:增加名字,并且按q(不论大小写)退出程序 2 li = ['taibai','alex','wusir','egon','女神'] 3 while 1: 4 username = i ...
- 简单的php数据库操作类代码(增,删,改,查)
数据库操纵基本流程为: 1.连接数据库服务器 2.选择数据库 3.执行SQL语句 4.处理结果集 5.打印操作信息 其中用到的相关函数有 •resource mysql_connect ( [stri ...
- pyRedis - 操作指南:增/删/改/查、管道与发布订阅功能
文章目录 1 redis docker 部署与安装 2 py - redis的使用 2.1 redis的连接 2.2 常规属性查看 2.2.2 关于删除 2.3 STRING 字符串的操作 2.4 H ...
- Linux技术--mysql数据库增-删-改-查
# mysql 数据库 ## 数据库的操作 ### 五个单位 * 数据库服务器 Linux或者 windows * 数据库 * 数据表 * 数据字段 * 数据行 ### 连接数据库 ``` 1 ...
- Python 操作 Elasticsearch 实现 增 删 改 查
Github 地址:https://github.com/elastic/elasticsearch-py/blob/master/docs/index.rst 官网地址:https://elasti ...
最新文章
- 指针的本质是:内存(地址)+ 类型 装包解包
- python django框架 比php_ThinkPHP, Django这两个框架孰优孰略,忽略语言本身?
- 【Python】Python入门-列表初相识
- C# WebProxy POST 或者 GET
- Android学习记录1--布局的类型
- mac用vscode打开html,Mac 命令行打开VsCode
- 关于 php mysql pdo cannot find driver 解决方案
- UnityShader9.1:光照基础实例
- 字体图标,web页面常用图标
- Ubuntu14.04安装wineqq国际版
- python 基于百度aip库 实现识别图片中的文字
- 你玩过轻量系统软总线应用吗?
- 鼠标光标一直在闪烁_便携有个性,功能强大,可配戴在手指上的键盘鼠标
- 如何从Google迁移到Amazon应用内购买
- GS1条形码为什么那么贵?有什么便宜的办法吗?
- 解决VMmare虚拟机安装过程没有权限问题
- 计算机专业国外访学进修目的,浙江师范大学关于2012年度专业技术职务评审工作的实施意见...
- Exception: Please add mujoco library to your PATH:set PATH=C:\User\*\ .mujoco\mujoco200\bin;%PAT
- 存货账龄分析报表(下)
- CAD手机看图软件中怎么将CAD图纸转为PDF/图片格式?
热门文章
- 北京网信金服PHP薪资_2020互联网大厂薪资曝光:程序员薪资将会变成白菜价?...
- 为热门项目 若依(ruoyi) 添加flyway,自动管理数据库版本
- CentOS8设置桥接网络模式,并配置静态IP及外网访问
- 图解CSS中padding、margin、border的区别及使用
- springboot项目解决跨域的几种方式
- java多线程学习系列
- Linux 3.13.0删除了Netlink API函数genl_register_ops() / genl_unregister_ops()
- C++ main函数中参数argc和argv相关定义与研究
- 实用typescript_TypeScript 泛型使用2-常见的工具类型
- std::atomic_thread_fence