zoukankan      html  css  js  c++  java
  • 【笔记】Django的ORM之删和改

    【笔记】Django的ORM之删和改

    一 删除操作

    1.视图层

    <table border="1">
        <thead>
        <tr>
            <th>序号</th>
            <th>ID</th>
            <th>出版社名称</th>
            <th>操作</th>
        </tr>
        </thead>
        <tbody>
        {% for publisher in publisher_list %}
            <tr>
            <td>{{ forloop.counter }}</td>
            <td>{{ publisher.id }}</td>
            <td>{{ publisher.name }}</td>
           <td><ahref="/delete_publisher/?id={{ publisher.id }}">删除</a></td>
            <td><ahref="/edit_publisher/?id={{ publisher.id }}">编辑</a></td>
            </tr>
        {% endfor %}
    
        </tbody>
    </table>
    

    2. 逻辑层

    通过GET方法向服务端传送要删除数据的id;

    def delete_publisher(request):
        # 通过GET方法获取id
        del_id = request.GET.get('id', None)
        # 如果取到id,删除该数据并跳转到列表页,否则提示失败
        if del_id:
            # 通过id拿到药删除的数据对象
            del_obj = models.Publisher.objects.get(id=del_id)
            del_obj.delete()
            return redirect('/publisher_list/')
        else:
            return HttpResponse('删除失败,该出版社不存在')
    

    二 修改操作

    1. 视图层

    与上面一样

    2. 逻辑层

    def edit_publisher(request):
        # 如果是POST请求,说明是要更新出版社名称
        if request.method == 'POST':
            # 获取要更新的id
            edit_id = request.POST.get("id", None)
            # 获取新的名字
            new_name = request.POST.get("publisher_name")
            # 通过id获得出版社对象
            publisher_obj = models.Publisher.objects.get(id=edit_id)
            # 赋值新名字
            publisher_obj.name = new_name
            # 提交到数据库中执行
            publisher_obj.save()
    
            return redirect('/publisher_list/')
    
        edit_id = request.GET.get("id", None)
        if edit_id:
            publisher_obj = models.Publisher.objects.get(id=edit_id)
            return render(request, 'edit_publisher.html', {"publisher":publisher_obj})
        else:
            return HttpResponse('编辑的出版社不存在!')
    

    三 其他

    1. 下拉框

    <form action="/edit_book/" method="post">
        <input type="text" style="display: none" name="id" value="{{ edit_obj.id }}">
        <p>书名:
            <input type="text" name="book_title" value="{{ edit_obj.title }}">
        </p>
        <p>出版社名称:
            <select name="publisher">
                {% for publisher in all_publisher %}
                    {% if edit_obj.publisher.id == publisher.id %}
                       <optionselectedvalue="{{ publisher.id }}">{{ publisher.name }}</option>
                    {% else %}
                       <optionvalue="{{ publisher.id }}">{{ publisher.name }}</option>
                    {% endif %}
                {% endfor %}
            </select>
        </p>
        <p>
            <input type="submit" value="提交">
        </p>
    </form>
    

    2. 对已有数据的数据表添加字段

     

    两种更新字段的方法

    添加字段

    执行python3 manage.py makemigrationspython3 manage.py migrate时,可以通过以下方式找到一个执行窗口,更方便的执行。

     

     

    manage.py执行窗口

    manage.py执行窗口

     

  • 相关阅读:
    Windows系统开机硬盘自检问题解决
    更改软件默认安装路径
    windows添加开机启动项
    xp 如何打开(进行)远程桌面连接
    xp看系统位数
    教你创建一个别人打不开删不掉的文件夹(干坏事爱好者必看)
    无操作一段时间显示器无信号
    长时间用电脑,(给窗口选一个合适的颜色)设置窗口绿色
    Windows右键菜单设置与应用技巧
    Outlook如何定时发邮件
  • 原文地址:https://www.cnblogs.com/banshaohuan/p/9260671.html
Copyright © 2011-2022 走看看