Django之跨表查询——正反向查询

Django之跨表查询——正反向查询,第1张

Django之跨表查询——正反向查询(ForeignKey)

1.正向查询和反向查询:

外键的查询 *** 作:

正向查询:

    # 正向查询
   # 基于对象,跨表查询
book_obj = models.Book.objects.all().first()
ret = book_obj.publisher # 和我这本书关联的出版社对象
print(ret,type(ret))
ret = book_obj.publisher.name # 和我这本书关联的出版社对象的name属性
print(ret,type(ret))

    # 查询id=1的书出版社名称
# 涉及到跨表 *** 作,利用双下划线
# 双下划线就表示跨了一张表
ret = models.Book.objects.filter(id=1).values_list("publisher__name")
print(ret)

反向查询:

    # 反向查询
   # 基于对象查找
publisher_obj = models.Publisher.objects.first()
ret = publisher_obj.book_set.all() #关联外键表小写并加上_set
print(ret)

    # 反向查询
# 基于双下划线
ret = models.Publisher.objects.filter(id=1).values_list("book__title")
print(ret)

  

补充:使用first得到的是对象,不可以.value_list(),使用filter得到的是QuerySet

外键,related_name = "books" 反向查询是用来代替book_set的

注意区分related_name和related_query_name:

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/588254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存