quguanwen

1.外键相关

  的概念 ,这里是一个出版社对应本书籍 ! 设计表使用model

  models.ForeignKey(\'关联一\', on_delete=models.CASCADE)          #给多设置外键 ,关联一 ,设置级联删除当一的内容被删除 ,所关联的多都被删除

from django.db import models


# Create your models here.
class presslist(models.Model):
    name = models.CharField(max_length=32)

    def __str__(self):
        return self.name


class Book(models.Model):
    name = models.CharField(max_length=32)
    p_id = models.ForeignKey(\'presslist\', on_delete=models.CASCADE)

2.urls.py代码

  两套增删改查

from django.conf.urls import url
from app1 import views

urlpatterns = [
    url(r\'^press/list/\', views.presslist, name=\'presslist\'),
    url(r\'^press/del/(\d+)/\', views.pressdel, name=\'pressdel\'),
    url(r\'^press/add/\', views.pressadd, name=\'pressadd\'),
    url(r\'^press/edit/(?P<edit_id>\d+)/\', views.pressedit1.as_view(), name=\'pressedit\'),

    url(r\'^book/list/\', views.booklist, name=\'booklist\'),
    url(r\'^book/del/(\d+)/\', views.bookdel, name=\'bookdel\'),
    url(r\'^book/add/\', views.bookadd, name=\'bookadd\'),
    url(r\'^book/edit/(\d+)/\', views.bookedit, name=\'bookedit\'),

]

3.views视图函数

  两套视图函数

  重点的 :models.Book.objects.create(name=book_name, p_id_id=press_id)  ,其中创建书籍记录需要关联出版社 ,这里面必须是从出版社表取数据p_id_id

from django.shortcuts import render, redirect, reverse, HttpResponse
from django.views import View
from app1 import models
import time
import functools
from django.utils.decorators import method_decorator


# Create your views here.


def presslist(request):
    msg_all = models.presslist.objects.all()
    return render(request, \'cbs.html\', {\'msg\': msg_all})


def pressadd(request):
    if request.method == \'POST\':
        press_name = request.POST.get(\'name\')
        models.presslist.objects.create(name=press_name)
        return redirect(reverse(\'presslist\'))
    return render(request, \'cbsadd-edit.html\')


def pressdel(request, del_id):
    print(del_id, type(del_id))
    models.presslist.objects.get(pk=del_id).delete()
    return redirect(reverse(\'presslist\'))


def pressedit(request, edit_id, test_id):
    obj = models.presslist.objects.get(pk=edit_id)
    print(test_id, edit_id)
    msg = \'\'
    if request.method == \'POST\':
        obj.name = request.POST.get(\'name\')

        if models.presslist.objects.filter(name=obj.name):
            msg = \'已存在\'

        if not obj.name:
            msg = \'不能为空\'

        if not models.presslist.objects.filter(name=obj.name) and obj.name:
            obj.save()

            return redirect(reverse(\'presslist\'))
    return render(request, \'cbsadd-edit.html\', {\'obj\': obj, \'msg\': msg})


class pressedit1(View):

    def get(self, request, edit_id, msg=\'\'):
        obj = models.presslist.objects.get(pk=edit_id)
        return render(request, \'cbsadd-edit.html\', {\'obj\': obj, \'msg\': msg})

    def post(self, request, edit_id):
        msg = \'\'
        obj = models.presslist.objects.get(pk=edit_id)
        obj.name = request.POST.get(\'name\')
        if models.presslist.objects.filter(name=obj.name):
            msg = \'已存在\'
        if not obj.name:
            msg = \'不能为空\'
        if not models.presslist.objects.filter(name=obj.name) and obj.name:
            obj.save()
            return redirect(reverse(\'presslist\'))
        return self.get(request, edit_id, msg)


def booklist(request):
    msg_all = models.Book.objects.all()
    return render(request, \'cbs.html\', {\'msg\': msg_all})


def bookdel(request, del_id):
    models.Book.objects.get(pk=del_id).delete()
    return redirect(reverse(\'booklist\'))


def bookadd(request):
    msg_all = models.presslist.objects.all()
    if request.method == \'POST\':
        book_name = request.POST.get(\'name\')
        press_id = int(request.POST.get(\'pid\'))
        models.Book.objects.create(name=book_name, p_id_id=press_id)
        return redirect(reverse(\'booklist\'))
    return render(request, \'cbsadd-edit.html\', {\'msg_all\': msg_all})


def bookedit(request, edit_id):
    obj = models.Book.objects.get(pk=edit_id)
    msg = \'\'
    if request.method == \'POST\':
        obj.name = request.POST.get(\'name\')

        if models.Book.objects.filter(name=obj.name):
            msg = \'已存在\'

        if not obj.name:
            msg = \'不能为空\'

        if not models.Book.objects.filter(name=obj.name) and obj.name:
            obj.save()

            return redirect(reverse(\'booklist\'))
    return render(request, \'cbsadd-edit.html\', {\'obj\': obj, \'msg\': msg})

4.模板复用

  cbs.html

###展示出版社 ,展示书籍列表的模板
{% extends \'base.html\' %}
{% block body1 %}
    <table class="text-center table table-striped table-bordered">
        <tr>
            <td>ID</td>
            {% if msg.0.p_id %}
                <td>书名</td>
                <td>出版社名字</td>
            {% else %}
                <td>出版社名字</td>
            {% endif %}
            <td>操作</td>
        </tr>
        {% for obj in msg %}
            <tr>
                <td>{{ obj.pk }}</td>
                <td>{{ obj.name }}</td>
                {% if obj.p_id %}
                    <td>{{ obj.p_id.name }}</td>
                    <td><a href={% url \'bookedit\' obj.pk %}><i class="fa fa-pencil-square-o" aria-hidden="true">&nbsp&nbsp&nbsp</i></a>
                        <a href={% url \'bookdel\' obj.pk %}><i class="fa fa-remove" aria-hidden="true"></i></a></td>
                {% else %}
                    <td><a href={% url \'pressedit\' edit_id=obj.pk %}><i class="fa fa-pencil-square-o"
                                                                        aria-hidden="true">&nbsp&nbsp&nbsp</i></a>
                        <a href={% url \'pressdel\' obj.pk %}><i class="fa fa-remove" aria-hidden="true"></i></a></td>
                {% endif %}

            </tr>
        {% endfor %}
    </table>
{% endblock %}

  cbsadd-edit.html

###修改与新增的复用模板
{% extends \'base.html\' %}

{% block body1 %}
    <form action="" method="post">
        <div style="margin-left: 100px;margin-top: 50px;" class="col-md-6 ">
            <input type="text" class="form-control" name="name" placeholder="{{ obj.name }}">{{ msg }}
            {% if msg_all %}
                <select name="pid">
                    {% for obj in msg_all %}
                        <option value="{{ obj.pk }}">{{ obj.name }}</option>
                    {% endfor %}
                </select>
            {% endif %}

        </div>
        <div style="margin-left: 10px;margin-top: 50px;" class="col-md-2 ">
            <button type="submit" class="btn btn-primary">提交</button>
        </div>
    </form>
{% endblock %}

 

  

 

分类:

技术点:

相关文章: