django moddle 关联查询

 https://blog.csdn.net/qq_41470573/article/details/120505432  

https://www.runoob.com/django/django-orm-2.html (看这个)

 

多对多 会生成多一张关系表

一对多就不会生成一张关系表   (外键写到多的那张表)

authors会在数据库变成authors_id 字段


from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=32)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    authors = models.ForeignKey("Author",on_delete=models.CASCADE)   #多对多
    class Meta:
        db_table = 'dog_book'  # 通过db_table自定义数据表名

class Author(models.Model):
    name = models.CharField(max_length=32)
    age = models.SmallIntegerField()
    class Meta:
        db_table = 'dog_author'  # 通过db_table自定义数据表名

 

数据插入

1、先查出来再往里面插入

pub_obj1 = models.Author.objects.filter(pk=1).first()
models.Book.objects.create(title="66",price="66",authors=pub_obj1)

2、先查出来得到具体数字 或者直接插入数字

pub_obj1 = models.Author.objects.filter(pk=1).first()
pk=pub_obj1.pk
print(pk)
models.Book.objects.create(title="66",price="66",authors_id=pk)


可以直接插入数字
models.Book.objects.create(title="66",price="66",authors_id=4)

 

数据查询

##正向查询
获取另外一张表的字段 字段名__关联另外一张表的字段名
book = models.Book.objects.filter(pk=1).all().values_list("authors__name")
# # 正向查询 正向:属性名称__跨表的属性名称
aa=models.Book.objects.filter(authors__name="lucax").values_list("title","price")
print(aa)
##反向:小写类名__跨表的属性名称
aa = models.Author.objects.filter(book__title="1").values_list("name", "book__price")
print(aa)



 # # 正向查询
book = models.Book.objects.filter(pk=1).first()
res = book.authors.name
 print(res)
# #反向查询 对象.小写类名_set(pub.book_set)
Author = models.Author.objects.filter(pk=1).first()
res = Author.book_set.all()
print(book)

 

 

另外一种更方便的写法

https://www.cnblogs.com/kaibindirver/p/17147733.html

添加外键查询外键子段的方法

https://www.cnblogs.com/kaibindirver/p/17227809.html

posted @   凯宾斯基  阅读(142)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2021-11-24 maven学习
2019-11-24 Hashmap(类似字典的东西)
2019-11-24 Hashset(不能添加相同的字符进入数组)
2018-11-24 html css样式
2018-11-24 HTML笔记
点击右上角即可分享
微信分享提示