Django ORM
class User(models.Model):
id = models.AutoField(primary_key=True)
username = models.CharField(max_length=100)
password = models.CharField(max_length=100, verbose_name = '密码')
python manage.py makemigrations
python manage.py migrate
字段的增删改查
class User(models.Model):
id = models.AutoField(primary_key=True)
username = models.CharField(max_length=100)
password = models.CharField(max_length=100)
age = models.IntegerField(verbose_name='年龄')
info = models.CharField(max_length=100, verbose_name='个人信息', null=True)
hobby = models.CharField(max_length=100, verbose_name='爱好', default='read')
直接改类代码,然后执行迁移
直接删除类中设计的字段,然后迁移
数据的增删改查
username = request.POST.get('username')
password = request.POST.get('password')
res = models.User.objects.filter(username=username)
data = models.User.objects.filter()
user_queryset = models.User.objects.all()
def register(request):
if request.method == "POST":
username = request.POST.get('username')
password = request.POST.get('password')
if models.User.objects.filter(username=username):
return HttpResponse('用户名已存在,请使用其他用户名注册')
res = models.User.objects.create(username=username,password=password)
return HttpResponse(f'用户{res.username}注册成功')
return render(request, 'register.html')
user_obj = models.User(username=username,password=password)
user_obj.save()
'''
<tbody>
{% for user_obj in user_queryset %}
<tr>
<td>{{ user_obj.id }}</td>
<td>{{ user_obj.username }}</td>
<td>{{ user_obj.password }}</td>
<td>{{ user_obj.age }}</td>
<td>{{ user_obj.hobby }}</td>
<td>{{ user_obj.info }}</td>
<td> ***通过网页后缀传递user_id信息给编辑路由***
<a href="/edit_user/?user_id={{ user_obj.id }}" class="btn btn-success btn-xs">编辑</a>
<a href="/del_user/" class="btn btn-danger btn-xs">删除</a>
</td>
</tr>
{% endfor %}
</tbody>
'''
def edit_user(request):
edit_id = request.GET.get('user_id')
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
age = request.POST.get('age')
hobby = request.POST.get('hobby')
info = request.POST.get('info')
models.User.objects.filter(id=edit_id).update(username=username,\
password=password,age=age,hobby=hobby,info=info)
return redirect('/userlist/')
edit_obj = models.User.objects.filter(id=edit_id).first()
return render(request,'edit_user.html',{'edit_obj':edit_obj})
def del_user(request):
del_id = request.GET.get('user_id')
models.User.objects.filter(id=del_id).delete()
return redirect('/userlist/')
创建表关系
'''
表关系:一对一、一对多、多对多
判断方法:换位思考,单向一对多即一对多,双向一对多即多对多,双向一对一即一对一
'''
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=32)
price = models.DecimalField(max_digits=8, decimal_places=2)
publish = models.ForeignKey(to='Publish')
authors = models.ManyToManyField(to='Author')
class Publish(models.Model):
name = models.CharField(max_length=32)
addr = models.CharField(max_length=64)
class Author(models.Model):
name = models.CharField(max_length=32)
age = models.IntegerField()
author_details = models.OneToOneField(to='AuthorDetails')
class AuthorDetails(models.Model):
phone = models.CharField(max_length=32)
addr = models.CharField(max_length=64)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!