zoukankan      html  css  js  c++  java
  • Django----ORM 基本操作的补偿

    
    
    from django.db import models

    # Create your models here.

    class Classes(models.Model):
    '''
    班级表
    '''
    titile = models.CharField(max_length=32)
    m = models.ManyToManyField("Teacher")



    class Teacher(models.Model):
    '''
    老师表
    '''
    name = models.CharField(max_length=32)

    # 单表的增删改查
    # 增
    # Teacher.objects.create(name="root")
    # obj=Teacher(name="root")
    # obj.save()
    # 查
    # Teacher.objects.all()
    # Teacher.objects.filter(id=1)
    # Teacher.objects.filter(id=1,name="root")
    # Teacher.objects.filter(id__gt=1)
    # result=Teacher.objects.filter(id__gt=1).first()
    #
    # 删
    # Teacher.objects.filter(id=1).delete()
    #
    # 改
    # Teacher.objects.all().update(name="alex")
    # Teacher.objects.filter(id=1).update(name="alex")





    # class C2T(models.Model):
    # '''
    # 班级和老师之间的关系表
    # '''
    # cid = models.ForeignKey(Classes)
    # tid = models.ForeignKey(Teacher)




    #####################################多对多
    '''
    班级:
    id titile
    1 1班
    2 2班
    3 3班
    老师:
    id name
    1 alex
    2 dou
    3 chou
    4 lv
    增加
    obj1 = Classes.objects.filter(id=1).first()
    obj1.m.add(2) # 2就是老师id
    obj1.m.add([4,5]) # 4,5就是老师id


    obj2 = Classes.objects.filter(id=2).first()
    obj2.m.add(2) # 2就是老师id
    obj2.m.add([4,5]) # 3,5就是老师id
    删除
    obj1.m.remove([4,5]) #删除 4,5老师
    清空
    obj2.m.clear() #删除 将班级id=2的老师全部删除
    重置
    obj2.m.set([2,3,4]) #将班级id=2的老师设置为id=[2,3,4]


    把2班的所有老师列绝出来
    obj3 = Class.objects.filter(id=2).first() #得到2班
    obj3.id
    obj3.titile
    ret = obj3.m.all() #ret是一个列表,[老师2(id,name),老师3(id,name),老师4(id,name)]


    老师班级关系表
    id 班级id 老师id
    1 1 2
    4 2 2
    5 2 3
    6 2 4

    '''




    class Student(models.Model):
    '''
    学生表
    '''
    username = models.CharField(max_length=32)
    age = models.IntegerField()
    gender = models.BooleanField()
    cs = models.ForeignKey(Classes,on_delete=models.CASCADE,)

    '''
    id username age gender cs_id

    增加
    Student.objects.create(username="aa",age=12,gender="男",cs_id=1)
    Student.objects.create(username="aa",age=12,gender="男",cs_id=Classes.objects.filter(id=1).first)
    查看
    ret = Student.objects.filter(id=1)
    for item in ret:
    print(item.id)
    print(item.username)
    print(item.age)
    print(item.gender)
    print(item.cs_id)
    print(item.cs.id)
    print(item.cs.name)
    删除
    Student.objects.filter(id=1).delete()
    Student.objects.filter(cs_id=1).delete()

    cid = input("请输入班级ID")
    Student.objects.filter(cs_id=cid).delete()

    cname=input("请输入班级名称")
    Student.objects.filter(cs__name=cname).delete() //写filter条件的时候,用__来跨表

    修改
    Student.objects.filter(cs_id=1).update()

    '''



     

    1 类代表数据的表

    2 类的对象代指数据库中标的一行记录

    3 FK字段代指关联中的一行数据(类的对象)

      a,正向查用fk字段

      b,反向查,用小写的  类名_set.filter()   。默认是小写的类名_set.   在外键里加上related_name="sss"后,反向查就可以直接用sss来代替 小写的类名_set

    4 M2M 字符会自动生成第三张那个表,以来关联表对第三张表简介操作

  • 相关阅读:
    Javascript 计时事件说明
    结合RibbonControl设计MDI窗体,在子窗体关闭后,顶部显示额外的控制栏残影
    交叉验证[转]
    [转载】我的数据挖掘之路 by wrchow
    《这些道理没有人告诉过你》摘记
    2017BUAA软工第0次作业
    SSM框架+slf4j 以Gradle实现
    RMQ(ST算法)
    博客园装饰
    【转载】UVa 11464 Even Parity 偶数矩阵
  • 原文地址:https://www.cnblogs.com/lhqlhq/p/9152501.html
Copyright © 2011-2022 走看看