ORM: object relationship mapping

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
ORM: object relationship mapping
 
关于数据库的两条命令:
        python manage.py makemigrations
        python manage.py migrate
        数据库第一次配置必须完成数据库的迁移,执行上边的两条命令就好
         
表单的记录操作:
    1、添加
        obj = models.表名(**kwargs)
        obj.save()
         
        models.表名.objects.create(**kwargs)
         
    2、修改
        #方式一:
        obj = models.表名.objects.filter(name="python")[0]
        obj.name = "JAVA"
        obj.save
         
        #方式二   update
        models.表名.objects.filter(name="python").update(**kwargs)
         
    3、删除:
        models.表名.objects.filter(name="python").delete()
         
    4、查询:
        QuerySet集合对象:
            models.表名.objects.all()
            models.表名.objects.filter(**kwargs)
            models.表名.objects.all().values(*args)
            models.表名.objects.all().values_list(*args)
            models.表名.objects.exclude(**kwargs)
            models.表名.objects.order_by(*args)
            models.表名.objects.distinct(*args)
      
        model对象:
            models.表名.objects.get(**kwargs)
            models.表名.objects.filter(**kwargs).first()
            models.表名.objects.filter(**kwargs).last()
            models.表名.objects.filter(**kwargs).count()
            models.表名.objects.filter(**kwargs).exist()
 
 
关联表记录操作:
    表关系:
        1、一对一
        2、一对多
        3、多对一
    添加记录:
        一对多:
            创建一对多:
            publish = models.Foreignkey("Publish",related_name="bookList")
            #添加记录方式1:
            models.Book.objects.create(publish_id=1)
            #添加的记录方式2:
            pubObj = models.Publish.objects.filter(name = "人民出版社")[0]
            models.Book.objects.create(publish=pubObj)
         
        多对多:
        创建多对多关系:
        authorlist = models.ManyToManyField("Author",related_name="bookList")
        多对多添加记录:
        book_obj = models.Book.objects.create(title="追风的人",price=100,publishDate="2017-12-12",publish_id=2)
        alex_obj = models.Author.objects.filter(name="alex")[0]
        egon_obj = models.Author.objects.filter(name="egon")[0]
         
    查询记录:
        正向查询:
            一对多:
            linux_obj = models.Book.objects.filter(title="linux").first()
            print(linux_obj.publish.name)  #与这本书对象关联的出版社的对象的名字
             
            多对多:
            linux_obj = models.Book.objects.filter(title="linux").first()
            print(linux_obj.authorlist.all())  #与这本书关联的所有的作者的对象集合
        反向查询:
            一对多:
            eg:查找人民出版社出版过的书籍的名字
            publist_obj = models.Publish.objects.filter(name="人民出版社")[0]
            print(publist_obj.bookList.all())   #出版社书籍对象集合
             
            多对多:
            eg:查找yuan出版过的素有书籍的名字和价格
            author_yuan = models.Author.objects.get(name="yuan")
            print(author_yuan.bookList.all())
            与该作者关联的所有书籍的对象的集合
            

  

posted @   一石数字欠我15w!!!  阅读(489)  评论(0编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
点击右上角即可分享
微信分享提示