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 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

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
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

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
40
41
42
43
44
45
46
47
48
49
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

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
40
41
42
<! 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<! 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<! 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 >


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM