美文网首页
Django 的多表操作(基于下划线的跨表查询)

Django 的多表操作(基于下划线的跨表查询)

作者: wangcc_sd | 来源:发表于2019-03-26 16:52 被阅读0次

    基于双下划线的跨表查询

    正向查询按字段,反向查询按表名小写

    查询金瓶梅这本书的出版社的名字

    ---------------正向查询--------------

        #基于下划线的跨表查询
    ret = Book.objects.filter(title='金瓶梅').values("publish__name")
    print(ret)
    
    

    -------------------反向查询------------

    ret = Publish.objects.filter(book__title='金瓶梅').values("name")
    print(ret)
    

    个人觉得 在基于下划线的反向查询中,反向查询时更加容易理解。

    查询金瓶梅这本书所有的作者名字

    #通过book表join与其关联的author表
    ##方式一
    ret = Book.objects.filter(title='追风筝的人').values("authors__name")
    print(ret)
    
    #方式2
    ret = Author.objects.filter(book__title='追风筝的人').values('name')
    print(ret)
    

    查询alex 的手机号

    --------------一对一查询-----------------
    ret= Author.objects.filter(name='alex').values("authorDetail__telephone")
    print(ret)
    

    阶段总结

    表与表、字段与字段之间,如果存在关联关系的话 ,可直接用双下划线语法进行查询。

    连续跨表查询

    手机号以911开头的作者出版过的所有书籍名称以及出版社名称

        ret = Book.objects.filter(authors__authorDetail__telephone__regex='911').values_list('title',"publish__name")
        print(ret)
    

    ---需要补充 【related_name】的概念及例子

    相关文章

      网友评论

          本文标题:Django 的多表操作(基于下划线的跨表查询)

          本文链接:https://www.haomeiwen.com/subject/xwogvqtx.html