外键一对多



import os
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Django_ORM20250526.settings")
    import django
    django.setup()
    from app.models import Person,Book,Press

    # 从多方查一方,对象导航查询
    # book = Book.objects.get(id=1)
    # # print(book)
    # print(book.press.pressname)

    # 从多方查一方
    # book = Book.objects.filter(id=1)
    # print(book[0].press)

    # 从一方查多方    出版社id查询图书
    # books = Book.objects.filter(press_id=2)
    # print(books)

    # 从一方查多方  发送两条sql语句     出版社名称查询图书  ss = req.POST.get("name")
    # books = Book.objects.filter(press_id=Press.objects.filter(pressname__contains="清华")[0].id)
    # books = Book.objects.filter(press_id=Press.objects.filter(pressname__contains="清华")[0].id)
    # print(books)

    """
    SELECT * FROM 
    `app_book` INNER JOIN `app_press` 
    ON (`app_book`.`press_id` = `app_press`.`id`) 
    WHERE `app_press`.`pressname` = '清华大学出版社' LIMIT 21; args=('清华大学出版社',)
    
    """

    # 从一方查多方  发送一条sql语句     出版社名称查询图书  ss = req.POST.get("name")
    # books = Book.objects.filter(press__pressname="清华大学出版社")
    # print(books)






    # values("press__pressname")   外键字段追加双下划线实现跨表联查
    books = Book.objects.all().values("bookname","press__pressname")
    print(books)












你可能感兴趣的:(sqlite,数据库)