project目录
models.py
from django.db import models
class Publisher(models.Model):
pid = models.AutoField(primary_key=True)
name = models.CharField(max_length=32, unique=True)
def __str__(self):
return '{} - {}'.format(self.pid, self.name)
class Book(models.Model):
name = models.CharField(max_length=32, unique=True)
pub = models.ForeignKey('Publisher', on_delete=models.CASCADE)
views.py
# 展示书籍
def book_list(request):
# 获取所有的书籍对象
books = models.Book.objects.all()
# 返回页面
return render(request, 'book_list.html', {'books': books})
# 新增书籍
def add_book(request):
if request.method == 'POST':
# 获取提交的数据
book_name = request.POST.get('book_name')
pub_id = request.POST.get('pub_id')
# 插入数据库
# 这里的参数名pub是book表里的pub_id字段,由于pub是外键,所以pycharm自动在pub后面加了_id,需要注意,参数名不要写成pub_id
# models.Book.objects.create(name=book_name, pub=models.Publisher.objects.get(pk=pub_id))
# 最好用下面的写法,直接把book表里的pub_id赋值上面从request.POST里get到的pub_id
models.Book.objects.create(name=book_name, pub_id=pub_id)
# # 跳转到book_list页面
return redirect('/book_list/')
# 查询所有出版社信息
all_publishers = models.Publisher.objects.all().order_by('pid')
return render(request, 'add_book.html', {'all_publishers': all_publishers})
# 删除书籍
def del_book(request):
# 获取要删除对象的id
book_pk = request.GET.get('pk')
# 在数据库中查询对应的对象,并删除
models.Book.objects.filter(id=book_pk).delete()
# 跳转到book_list展示页面
return redirect('/book_list/')
# 编辑书籍
def edit_book(request):
# 查询要编辑书籍的对象
book_id = request.GET.get('pk')
edit_book_obj = models.Book.objects.get(id=book_id)
if request.method == 'POST':
# 获取新提交的数据
book_name = request.POST.get('book_name')
pub_id = request.POST.get('pub_id')
# 编辑书籍
edit_book_obj.name = book_name
edit_book_obj.pub_id = pub_id
# 保存到数据库
edit_book_obj.save()
# 重定向到book_list展示页面
return redirect('/book_list/')
# 查询所有出版社信息
all_publishers = models.Publisher.objects.all().order_by('pid')
# 返回edit_book页面
return render(request, 'edit_book.html' , {'edit_book_obj': edit_book_obj , 'all_publishers': all_publishers})
add_book.html
Title
edit_book.html
Title
book_list.html
Title
| 序号 |
ID |
书名 |
出版社 |
{% for book in books %}
| {{ forloop.counter }} |
{{ book.id }} |
{{ book.name }} |
{{ book.pub.name }} |
删除
编辑
|
{% endfor %}