DjangoORM操作数据库
ORM操作
select * from tb where id > 1
# 对应关系
models.tb.objects.filter(id__gt=1)
models.tb.objects.filter(id=1)
models.tb.objects.filter(id__lt=1)
#创建后表名为:day01_userinfo
class UserInfo(models.Model):
#Django会自动帮我们多创建一列 id,自增,主键
#创建用户名列,字符串类型,指定长度
#
username = models.CharField(max_length=32)
password = models.CharField(max_length=64)
email = models.CharField(max_length=60)
test = models.EmailField(max_length=19,null=True)
# gender = models.CharField(max_length=64,null=True)#可以为空
#添加外键,在django2.0中,添加外键要加上on_delete=;否则则会报异常
# 在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题。
#生成的外键列会多加个id 即在UserInfo看到的列名是user_group_id
user_group = models.ForeignKey("UserGroup",to_field=‘uid‘,default=1,on_delete=models.CASCADE)
#to_field必须是唯一的,不加to_field也可以,默认是主键
class UserGroup(models.Model):
uid = models.AutoField(primary_key=True) #指定自增列 primary_key=True
caption = models.CharField(max_length=32)
user_type_choice = {
(1,‘超级用户‘),
(2, ‘普通用户‘),
(3, ‘一般用户‘),
}
user_type_id = models.IntegerField(choices=user_type_choice)
#在上面的选择中选择views.py 执行增删查改等的操作
def orm(request):#向userinfo插入数据,有以下三种方式
# models.UserInfo.objects.create(username=‘root‘,password=‘123‘)
# dic={‘username‘:‘emily‘,‘password‘:‘666‘} #向userinfo插入数据
# models.UserInfo.objects.create(**dic)
#
# obj=models.UserInfo(username=‘alex‘,password=‘123‘) #向userinfo插入数据
# obj.save()
#查询:
# result = models.UserInfo.objects.all() #查询全部
result = models.UserInfo.objects.filter(username=‘alex‘,password=‘123‘) #根据条件筛选,组成 and
# result是QuerySet类型,形同[]列表
# [obj(id,user,password),obj(id,user,password),obj(id,user,password)]
for row in result:
print(row.id,row.username,row.password)
print(result) #打印出每一列的内容
#删除
# models.UserInfo.objects.all().delete()#全部删除
# models.UserInfo.objects.filter(id=4).delete()
#更新
# models.UserInfo.objects.all().update(password="5555")#全部更新
# models.UserInfo.objects.filter(id=3).update(password="5555")
return HttpResponse(‘orm‘)viwes.py 获取数据传数据
def user_detail(request, nid):
obj = models.UserInfo.objects.filter(id=nid).first()
return render(request, ‘user_detail.html‘,{‘obj‘:obj})
def user_del(request, nid):
models.UserInfo.objects.filter(id=nid).delete()
return redirect(‘/cmdb/user_info/‘)
def user_edit(request, nid):
if request.method =="GET":
obj = models.UserInfo.objects.filter(id=nid).first()
return render(request, ‘user_edit.html‘,{‘obj‘:obj})
elif request.method=="POST":
nid = nid
u = request.POST.get(‘username‘)
p = request.POST.get(‘password‘)
models.UserInfo.objects.filter(id=nid).update(username=u,password=p)
return redirect(‘/cmdb/user_info/‘)xxx.html
<ul>
{% for row in user_list %}
<li><a href="/cmdb/userdetail-{{ row.id }}/">{{ row.username }}</a>|
<span>{{ row.user_group.caption }}</span>
<a href="/cmdb/userdel-{{ row.id }}/">|删除</a>
<a href="/cmdb/useredit-{{ row.id }}/">|编辑</a>
</li>
{% endfor %}
</ul>