Django中mysql数据库增删改查方法总结(五)

表字段的操作

表字段的增加:

对于已经有数据的表,新增字段的时候,要设置默认值或者指定该字段为空。例:

models.py中

addr = models.CharFiled(max_length=32,default='China')
num = models.CharField(max_length=32,null=true)

接下来运行数据库记录+操作命令(让ORM和数据库表一一对应)

python manage.py makemigrations
python manage.py migrate

现在sql表中就多了一个addr和num字段了

表字段的删除

直接把models.py的属性删除即可。

表数据的增删改查

查:

后端
def userlist(request):

查询user表所有数据

user_queryset = models.User.objects.all()
return render(request,‘userlist.html’,{‘user_list’:user_queryset}) # 前端可以通过user_list拿到对应的数据
前端
# 模板语法之for循环 循环展示数据 可以直接敲for tab键自动补全for循环语法

{% for user_obj in user_list %}
<tr>
<td>{{ user_obj.id }}</td>
<td>{{ user_obj.name }}</td>
<td>{{ user_obj.password }}</td>
<td>{{ user_obj.addr }}</td>
<td class="text-center">
<a href="/edit_user/?id={{ user_obj.pk }}" class="btn btn-primary btn-sm">编辑</a>
<a href="/delete_user/?id={{ user_obj.id }}" class="btn btn-danger btn-sm">删除</a>
</td>
</tr>
{% endfor %}

删:

查询数据的两种方式

models.User.objects.filter() 拿到的是queryset对象
edit_obj = models.User.objects.get(id=edit_id) 拿到的就是数据对象本身(不推荐使用)

def delete_user(request):
# 获取被删除对象的id
delete_id = request.GET.get(‘id’)
# queryset自带delete方法,删除queryset里面所有的数据对象
# queryset调delete()执行的批量操作 删除的是queryset里面所有的数据
affect_rows = models.User.objects.filter(id=delete_id).delete()
print(affect_rows)
return redirect(’/userlist’)
前端
<a href="/delete_user/?id={{ user_obj.id }}" class=“btn btn-danger btn-sm”>删除

增:

方式1:新增数据操作 返回值就是当前被创建对象本身
user_obj = models.User.objects.create(name=username,password=password,addr=addr)
方式2:
user_obj = models.User(**request.POST)
user_obj.save()

改:

思路:先获取到底改哪条数据 查询该数据 渲染到前端页面供用户查看及修改
post请求中获取被修改对象的id两种方式:
1.input隐藏标签
2.action携带参数

<form action="/edit_user/?id={{ edit_obj.pk }}" method="post">
<input type="hidden" value="{{ edit_obj.pk }}" name="id">
<p>username:<input type="text" name="username" class="form-control" value="{{ edit_obj.name }}"></p>
<p>password:<input type="password" name="password" class="form-control" value="{{ edit_obj.password }}"></p>
<p>addr:<input type="text" name="addr" class="form-control" value="{{ edit_obj.addr }}"></p>
<input type="submit" class="btn btn-success">
</form>

两种修改数据的方式:

修改数据方式1

models.User.objects.filter(id=id2).update(name=username,password=password,addr=addr)

修改数据方式2

edit_obj = models.User.objects.filter(id=id2).first()
edit_obj.name = username
edit_obj.password = password
edit_obj.addr = addr
edit_obj.save()
只要是queryset对象就可以连续调用queryset对象对应的方法
models.User.objects.filter().filter().filter().filter().filter()

posted @ 2019-04-14 17:37  不会玩python  阅读(15)  评论(0编辑  收藏  举报