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_id
 1    1
 1    2
 6    1
 1000  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 Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.10/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r‘^$‘, views.home, name=‘home‘)
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r‘^$‘, Home.as_view(), name=‘home‘)
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. 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 students

urlpatterns = [
    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 models

def 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>
时间: 2024-08-07 06:18:47

django一对多 增 删 改 查的相关文章

django 多对多 增 删 改 查

一.通过url方式实现多对多的:增加,删除,编辑 代码目录: urls.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 """django_one URL Configuration The `urlpatterns` list routes URLs to views. For more informa

Python---MySQL数据库之四大操作(增 删 改 查)

一.对数据库,表,记录---四大操作(增 删 改 查) 1.操作数据库 (1)对数据库(文件夹):进行增加操作 Create  database  库名; 例:  Create  database  db7 ; 查询库: show  databases; 结果: +-----------------------------+ | Database                   | +----------------------------+ | information_schema | |

ADO.NET 增 删 改 查

ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访问技术的基础 连接数据库基本格式:需要两个类1.数据库连接类 SqlConnection2.数据库操作类 SqlCommand 1.连接数据库写连接字符串,立马就要想到有4点要写完,1.连接哪台服务器,2.连接哪个数据库,3.连接用户名,4.密码string sql = "server=.(服务器i

oracle 11g 建库 建表 增 删 改 查 约束

一.建库 1.(点击左上角带绿色+号的按钮) 2.(进入这个界面,passowrd为密码.填写完后点击下面一排的Test按钮进行测试,无异常就点击Connect) 二.建表 1-1. create table 表名1( Tid number(4) --primary key 列级约束(主键), Tname varchar(10) --ont null  非空约束,只能定义在列级约束, Tsex varchar2(2)--check (tsex='男'  or  tsex='女') 检查约束, T

数据库基础学习4--表格的 增 删 改 查(简单查询与高级查询)

一.增 C:create 增加,创建,向数据库里面添加数据. insert into Fruit values('K009','苹果',3.0,'高青',90,'') insert into Fruit(Ids,Name,Price,Source,Numbers) values('K010','苹果',3.0,'高青',90) 二.改 U:update修改,从数据库表里面修改数据. update Fruit set Source='烟台' where Ids='K001' 三.删 D:delet

SQL 增/删/改/查 (总结)

1.增 INSERT  INTO  表名  VALUES (" "," ") ; INSERT INTO 表名(字段)  VALUES(" "); 2. 删 DELETE   FROM 表名  WHERE  ... 3.改 UPDATE  表名 SET   ... WHERE  ... 4.查 SELECT × FROM  表名 ORDER BY ...

1-24.list的增,删,改,查

增: 1.append(通过元素增加,默认加在最后print(a.append('hgf'))) 2.extend( 迭代的去增,就是把字符串的字符逐个去给这个列表加上去) 3.insert((按照索引去增加,前为索引,后为增加的字) 删: 1,pop(通过位置索引去删除) 2.del (通过索引,切片删除) 3.clear(清空列表) 4.remove(通过元素去删除) #返回值是什么意思? 改: a[]='i' print() 查: for i in a: print(a) 其他列表 1.s

php基础:数据库的含义和基本操作 增 删 改 查

//数据库是帮我们管理数据的一个软件,我们将数据给他,放进数据库里.他能很稳妥的帮我们管理起来,且效率很高.//php的大部分工作就是  php->连接数据库->写入数据->查出数据->格式化数据->显示出来,//数据库管理数据是以表的形式组成的,多行多列,表头声明好了,一个表创建好了,剩下的就是往里面添加数据 多张表放在一个文件夹里面就形成了库  mysql服务器帮我们管理多个库C:\wamp\bin\mysql\mysql5.6.12\data   数据库中的数据放在这个

Android 增,删,改,查 通讯录中的联系人

一.权限 操作通讯录必须在AndroidManifest.xml中先添加2个权限, <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission> <uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>