• DjangoORM操作数据库


    ORM操作
    select * from tb where id > 1
    # 对应关系

    models.tb.objects.get(id=1)  #不建议用get  如果不存在就报错,用filter永远返回一个queryset列表
    models.tb.objects.filter(id__gt=1)  #大于(双下划线) 


    models.tb.objects.filter(id=1)
    models.tb.objects.filter(id__lt=1)  #小于(双下划线)

    models.tb.objects.filter(id=1).first()   #返回一个对象或None

    #创建后表名为: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_info(request):
    if request.method == "GET":
    user_list=models.UserInfo.objects.all()
    group_list=models.UserGroup.objects.all()
    return render(request, 'user_info.html',{'user_list':user_list,'group_list':group_list})
    elif request.method == "POST":
    u = request.POST.get('user')
    p = request.POST.get('pwd')
    t = request.POST.get('type')
    models.UserInfo.objects.create(username=u,password=p)
    # models.UserGroup.objects.create(user_type_id=t)

    return redirect('/cmdb/user_info/')

    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>

    ——————————————外键————————————————

     

  • 相关阅读:
    Dijksrta algorithm
    头一回发博客,来分享个有关C++类型萃取的编写技巧
    读书笔记「Python编程:从入门到实践」_4.操作列表
    读书笔记「Python编程:从入门到实践」_3.列表简介
    读书笔记「Python编程:从入门到实践」_2.变量和简单数据类型
    2017/01/20 学习笔记 关于修改和重打jar包
    2017/01/07 学习笔记 jar包,maven
    常用链接
    使用Dir,遍历文件夹下所有子文件夹及文件
    .NET WEB项目的调试发布相关
  • 原文地址:https://www.cnblogs.com/hjy123/p/12981344.html
Copyright © 2020-2023  润新知