day 64 Django 第五天 多表对多表的对应关系ORM
生活随笔
收集整理的這篇文章主要介紹了
day 64 Django 第五天 多表对多表的对应关系ORM
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
?一、查
設(shè)置 Author表 ?在 views文件中?
# 作者表 class Author(models.Model):id =models.AutoField(primary_key=True)name= models.CharField(max_length=32,null=False,unique=True)#告訴ORM 我這張表和book是多對多的對應(yīng)關(guān)系,orm自動幫我生成第三張表book= models.ManyToManyField(to='Book')
生成表在mysql中
D:\mysite>python3 manage.py makemigrations D:\mysite>python3 manage.py migrate?
?
?
?
二、增
靜態(tài)頁面 Author_add.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>添加作者信息</title> </head> <body> <h1>添加作者</h1> <form action="/Author_add/" method='post'><p>作者姓名:<input type="text" name='author_name'></p><p><select multiple name="books">{% for book in book_list %}<option value="{{ book.id }}">{{ book.title }}</option>{% endfor %}</select></p><p><input type="submit" value="提交"></p> </form> </body> </html>?
?
from app01 import viewsurlpatterns = [url(r'^admin/', admin.site.urls),url(r'^Publisher_list/',views.Publisher_list),url(r'^Publisher_add/',views.Publisher_add),url(r'^Publisher_del/',views.Publisher_del),url(r'^Publisher_edit/',views.Publisher_edit),url(r'^Author_list/',views.Author_list), url(r'^Author_add/',views.Author_add)定義函數(shù)
def Author_add(request):if request.method =='POST':#獲取前端表單作者姓名的變量:new_author_name =request.POST.get('author_name')# 獲取前端表單多選框的書名books = request.POST.getlist('books')#獲取在數(shù)據(jù)庫中添加新的作者名的對象 name為mysql表中的字段new_author_obj = models.Author.objects.create(name =new_author_name)#獲取相關(guān)書的信息new_author_obj.book.set(books)print(11111)return redirect('/Author_list/')ret =models.Book.objects.all()print(ret)print(ret[0])print(ret[0].title)return render(request,'author_add.html',{'book_list':ret})提交頁面
?
?
?三、刪除
?
urls
from app01 import viewsurlpatterns = [url(r'^admin/', admin.site.urls),url(r'^Publisher_list/',views.Publisher_list),url(r'^Publisher_add/',views.Publisher_add),url(r'^Publisher_del/',views.Publisher_del),url(r'^Publisher_edit/',views.Publisher_edit),url(r'^Author_list/',views.Author_list),url(r'^Author_add/',views.Author_add), url(r'^Author_del/',views.Author_del)
?
定義的函數(shù)在views里
def Author_del(request):del_id =request.GET.get('id')models.Author.objects.get(id =del_id).delete()return redirect('/Author_list/')在靜態(tài)網(wǎng)頁中添加(修改Author_list.html文件)
?
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Author_list</title> </head> <body> <table BORDER="1"><thead><tr><td>#</td><td>ID</td><td>名字</td><td>作品</td><td>操作</td></tr></thead><tbody>{% for author in author_list %}<tr><td>{{ forloop.counter }}</td><td>{{ author.id }}</td><td>{{ author.name }}</td><td>{% for book in author.book.all %}{{ book.tile }}{% endfor %}</td><td> <a href="/Author_del/?id={{ author.id }}">刪除</a> </td></tr>{% endfor %}<a href="/Author_add/">添加新的作者</a></tbody> </table> </body> </html>?
?
?四、編輯
author_edit.html 頁面
?
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>編輯頁面</title> </head> <body> <h1>此頁面為編輯頁面</h1> <form action="/Author_edit/" method="post"><p><input type="hidden" name='author_id' value="{{ author.id }}"></p><p><input type="text" name='author_name' value="{{ author.name }}"></p><p><select multiple name="books">{% for foo in book %}<option value="{{ foo.id }}">{{ foo.title }}</option>{% endfor %}</select></p><p><input type="submit" value="提交"></p> </form> </body> </html>?
views里的函數(shù)
?
def Author_edit(request):if request.method=='POST':author_id =request.POST.get('author_id')author_name = request.POST.get('author_name')books_author =request.POST.getlist('books')author_obj= models.Author.objects.get(id =author_id)author_obj.name =author_nameauthor_obj.book.set(books_author)author_obj.save()return redirect('/Author_list/')print(222)edit_id =request.GET.get('id')edit_id_obj =models.Author.objects.get(id =edit_id)print(1111)ret_obj =models.Book.objects.all()print(ret_obj)return render(request,'author_edit.html',{'book':ret_obj,'author':edit_id_obj})?
?
老師寫的views文件
?
?
# 編輯作者 def edit_author(request):# 如果編輯完提交數(shù)據(jù)過來if request.method == "POST":# 拿到提交過來的編輯后的數(shù)據(jù)edit_author_id = request.POST.get("author_id")new_author_name = request.POST.get("author_name")# 拿到編輯后作者關(guān)聯(lián)的書籍信息new_books = request.POST.getlist("books")# 根據(jù)ID找到當前編輯的作者對象edit_author_obj = models.Author.objects.get(id=edit_author_id)# 更新作者的名字edit_author_obj.name = new_author_name# 更新作者關(guān)聯(lián)的書的對應(yīng)關(guān)系edit_author_obj.book.set(new_books)# 將修改提交到數(shù)據(jù)庫edit_author_obj.save()# 返回作者列表頁,查看是否編輯成功return redirect("/author_list/")# 從URL里面取要編輯的作者的id信息edit_id = request.GET.get("id")# 找到要編輯的作者對象edit_author_obj = models.Author.objects.get(id=edit_id)# 查詢所有的書籍對象ret = models.Book.objects.all()return render(request, "edit_author.html", {"book_list": ret, "author": edit_author_obj})
?
轉(zhuǎn)載于:https://www.cnblogs.com/mengbin0546/p/8989356.html
總結(jié)
以上是生活随笔為你收集整理的day 64 Django 第五天 多表对多表的对应关系ORM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jaxb对xml报文头的小修小改
- 下一篇: poj3669 Meteor Showe