Django 增删改查

一、创建数据库表

1、自定义关系表
        #使用外键关联,想关联几个关联几个
        user_group = models.ForeignKey("UserGroup",on_delete=models.CASCADE,to_field='uid',default=1)

 2、自动创建关系表
        #只能关联2个
        #无法直接对第三张表操作
        class Application(models.Model):
        name = models.CharField(max_length=32)
        r = models.ManyToManyField("Host")
        间接查找:
            1、定义表结构和关系,会生成第三张表
            class host(models.Model):
                hostname = models.CharField(max_length=32)
                port = models.IntegerField()
            class application(models.Model):
                appname = models.CharField(max_length=32)
                host_to = models.ManyToManyField("host")
            2、    获取表数据
                host_group = models.application.objects.all()
                    print(host_group)
                    for i in host_group:
                    print(i.appname,i.host_to.all())
                return render(request,'host_info.html',{"host_group":host_group})
            3、    传递给前端
                #第一个循环获取application 表中appname
                {% for op in host_group %}
                <tr>
                    <td>{{ op.appname }}</td>
                    <td>
                        #第二个循环获取application表中appname具体对应多少值
                        {% for i in op.host_to.all %}
                            <span>{{ i.hostname }}</span>
                        {% endfor %}
                    </td>
                    <td>{{ op.port }}</td>
                </tr>
                {% endfor %}

二 数据库操作

1、获取及添加数据库信息

        

 

def host_info(request):
    if request.method == "GET":
        host_group = models.application.objects.all()
        host_list = models.host.objects.all()
        return render(request,'host_info.html',{"host_group":host_group,"host_list":host_list})
    if request.method == "POST":
        group_name = request.POST.get('group_name')
        host_name = request.POST.getlist('host_name')
        obj = models.application.objects.create(appname=group_name)
        print(obj)
        obj.host_to.add(*host_name)
        return redirect("/host_info")

2、删除数据

        1、获取要删除的id,后删除

        <a href="/del_list-{{ op.id }}.html">删除</a>

def del_list(request,nid):
    models.application.objects.filter(id=nid).delete()
    return redirect('/host_info')

3、更新数据

        1、获取数据的id

         2、获取前端提交的数据已name 为依据

<form action="/edit_list-{{ obj.id }}.html" method="post" id="add_form" >
    <input type="text" name="nid" style="display: none" value="{{ obj.id }}"/>
    <input type="text" name="user" value="{{ obj.appname }}"/>
    <select name="group_id" id="l2" multiple>
        {% for op in host_list %}
            <option value="{{ op.id }}">{{ op.hostname }}</option>
        {% endfor %}
    </select>
    <input id="ajxe_host" type="submit" value="提交">
</form>

        3、修改数据库

def edit_list(request,nid): 
    if request.method == "GET":
        obj = models.application.objects.get(id=nid)
        host_list = models.host.objects.all()
        return render(request,"edit_host.html",{"obj":obj,"host_list":host_list})
    if request.method == "POST":
        h = request.POST.get('user')
        i = request.POST.getlist('group_id')
        models.application.objects.filter(id=nid).update(appname=h)
        obj = models.application.objects.get(id=nid)
        obj.host_to.clear()
        obj.host_to.add(*i)
        return redirect('/host_info')
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值