zoukankan      html  css  js  c++  java
  • django 多对多 增 删 改 查

    一、通过url方式实现多对多的:增加,删除,编辑

    代码目录:

    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
    from app01.views import teachers
    
    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),
    
        url(r'^get_teachers.html$', teachers.get_teachers),
        url(r'^add_teachers.html$', teachers.add_teachers),
        url(r'^del_teachers.html$', teachers.del_teachers),
        url(r'^edit_teachers.html$', teachers.edit_teachers),
    
    ]
    

    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)
    

    teachers.py

    from django.shortcuts import render
    from django.shortcuts import redirect
    from app01 import models
    
    
    def get_teachers(request):
        cls_list = models.Classes.objects.all()
        return render(request,'get_teachers.html',{'cls_list':cls_list})
    
    def add_teachers(request):
        if request.method == "GET":
            teachers_list = models.Teachers.objects.all()
            return render(request, 'add_teachers.html',{'teachers_list':teachers_list})
        elif request.method == "POST":
            nid = request.POST.get('titile')
            # [1,2,3,4,]
            teachers_id = request.POST.getlist('teachers_id')
            # 10
            obj = models.Classes.objects.create(titile = nid)
            # 10 1
            # 10 2
            # 10 3
            # 10 4
            obj.m.add(*teachers_id)
            return redirect('get_teachers.html')
    
    
    def del_teachers(request):
        nid = request.GET.get('nid')
        models.Classes.objects.filter(id=nid).delete()
        return redirect('get_teachers.html')
    
    
    def edit_teachers(request):
        if request.method == "GET":
            nid = request.GET.get('nid')
            obj = models.Classes.objects.filter(id=nid).first()
            teachers_list = models.Teachers.objects.all()
            return render(request,'edit_teachers.html',{'nid':nid,'obj':obj,'teachers_list':teachers_list})
        elif request.method == "POST":
            n = request.POST.get('nid')
            t = request.POST.get('titile')
            teachers_id = request.POST.getlist('teachers_id')
            obj = models.Classes.objects.filter(id=n).update(
                id=n,
                titile=t,
            )
            obj.m.add(*teachers_id)
            return redirect('get_teachers.html')

    添加功能

    get_teachers.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div>
        <a href="/add_teachers.html">添加</a>
    </div>
    <div>
        <table border="1">
            <thead>
            <tr>
                <th>ID</th>
                <th>班级</th>
                <th>分配老师</th>
                <th>操作</th>
            </tr>
            </thead>
            <tbody>
            {% for row in cls_list %}
                <tr>
                    <td>{{ row.id }}</td>
                    <td>{{ row.titile }}</td>
                    <td>
                        {% for cls in row.m.all %}
                        {{ cls.name }}
                        {% endfor %}
                    </td>
                    <td>
                        <a href="/del_teachers.html?nid={{ row.id }}">删除</a>
                        |
                        <a href="/edit_teachers.html?nid={{ row.id }}">编辑</a>
                    </td>
                </tr>
            {% endfor %}
            </tbody>
        </table>
    </div>
    </body>
    </html>

    添加功能

    add_teachers.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="add_teachers.html" method="POST">
        {% csrf_token %}
        <p><input type="text" name="titile" placeholder="班级" /></p>
        <p>
        <select name="teachers_id" multiple="multiple" >
              {% for teachers in teachers_list %}
               <option value="{{ teachers.id}}">{{ teachers.name }}</option>
              {% endfor %}
        </select>
        </p>
        <input type="submit" value="提交" />
    </form>
    </body>
    </html>
    

    编辑功能

    edit_teachers.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="/edit_teachers.html?nid={{ nid }}" method="POST">
        {% csrf_token %}
         <p><input type="text" name="titile" placeholder="班级" value="{{ obj.titile }}"/></p>
        <p>
        <select name="teachers_id" multiple="multiple" >
              {% for teachers in teachers_list %}
               <option value="{{ teachers.id}}">{{ teachers.name }}</option>
              {% endfor %}
        </select>
        </p>
        <input type="submit" value="提交">
    </form>
    </body>
    </html>
    
  • 相关阅读:
    (转) Linux中profile、bashrc、bash_profile之间的区别和联系
    Ubuntu 安装MyEclipse10
    VMware_ubuntu设置共享文件夹
    (转载)Android出现“Read-only file system”解决办法
    Android 执行 adb shell 命令
    android传感器使用
    Android源码下载和编译过程
    jquery实现的ajax
    转载SQL_trace 和10046使用
    查看Oracle相关日志 ADRCI
  • 原文地址:https://www.cnblogs.com/nulige/p/6550789.html
Copyright © 2011-2022 走看看