DjangoORM操作数据库

Posted hjy123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

 

以上是关于DjangoORM操作数据库的主要内容,如果未能解决你的问题,请参考以下文章

DjangoORM操作数据库

DjangoORM外键操作

Django ORM 数据库操作

Django ORM 数据库操作

Django入门4: ORM 数据库操作

djangoORM数据类型及基本操作