Django QuerySet คืออะไร?

เมื่อฉันทำสิ่งนี้

>>> b = Blog.objects.all()
>>> b

ฉันได้รับสิ่งนี้:

>>>[<Blog: Blog Title>,<Blog: Blog Tile>]

เมื่อฉันถามว่า b เป็นประเภทใด

>>> type(b)

ฉันได้รับสิ่งนี้:

>>> <class 'django.db.models.query.QuerySet'>

สิ่งนี้หมายความว่า? เป็นประเภทข้อมูลเช่น dict, list ฯลฯ หรือไม่

ตัวอย่างวิธีที่ฉันสามารถสร้างโครงสร้างข้อมูลเช่น QuerySet จะได้รับการชื่นชม

ฉันอยากรู้ว่า Django สร้าง QuerySet ได้อย่างไร (รายละเอียดเต็มไปด้วยเลือด)


person gath    schedule 13.01.2011    source แหล่งที่มา
comment
คุณสามารถดูซอร์สโค้ดของ Django เพื่อดูรายละเอียดที่เต็มไปด้วยเลือด นอกเหนือจากนั้น QuerySet ยังเป็นเพียงวัตถุเหมือนกับวัตถุอื่น ๆ ซึ่งบางครั้งก็มีพฤติกรรมเหมือนรายการ   -  person Deniz Dogan    schedule 13.01.2011
comment
สำหรับสิ่งที่เป็นอยู่: docs.djangoproject.com/en/dev/ref/ model/querysets สำหรับวิธีการทำงาน ตามที่ได้กล่าวไปแล้ว โปรดดูที่ซอร์สโค้ด   -  person Felix Kling    schedule 13.01.2011
comment
นี่คือที่ที่ QuerySet ถูกกำหนดไว้ใน Django: github.com /django/django/blob/master/django/db/models/query.py   -  person Edward D'Souza    schedule 31.05.2013


คำตอบ (4)


ใช่ มันเป็นเพียงประเภทอื่น ที่สร้างขึ้น เหมือนประเภทอื่นๆ ทั้งหมด

person Ignacio Vazquez-Abrams    schedule 13.01.2011
comment
คำตอบเฉพาะลิงก์? นั่นควรจะเป็นเรื่องใหญ่ ไม่-ไม่... - person o0'.; 24.05.2020

ชุดแบบสอบถาม django ก็เหมือนกับชื่อของมัน โดยพื้นฐานแล้วเป็นคอลเลกชันของ ( sql) ในตัวอย่างของคุณด้านบน print(b.query) จะแสดงแบบสอบถาม sql ที่สร้างจากการเรียก django filter ของคุณ

เนื่องจากชุดการสืบค้น lazy การสืบค้นฐานข้อมูลจึงไม่ได้ดำเนินการทันที แต่เฉพาะเมื่อ จำเป็น - เมื่อชุดแบบสอบถามถูก ประเมิน สิ่งนี้จะเกิดขึ้น เช่น หากคุณเรียกใช้เมธอด __str__ เมื่อคุณพิมพ์ หรือคุณจะเรียก list() บนเมธอดนั้น หรือสิ่งที่เกิดขึ้นเป็นส่วนใหญ่ คุณจะทำซ้ำ (for post in b..) ความเกียจคร้านนี้จะช่วยให้คุณไม่ต้องทำการสืบค้นที่ไม่จำเป็น และยังช่วยให้คุณสามารถเชื่อมโยงชุดการสืบค้นและตัวกรองได้ (คุณสามารถกรองชุดการสืบค้นได้บ่อยเท่าที่คุณต้องการ)

person Bernhard Vallant    schedule 13.01.2011

QuerySet แสดงถึงคอลเลกชันของวัตถุจากฐานข้อมูลของคุณ อาจมีตัวกรองเป็นศูนย์ หนึ่งรายการ หรือหลายรายการก็ได้ ตัวกรองจะจำกัดผลลัพธ์การสืบค้นให้แคบลงตามพารามิเตอร์ที่กำหนด ในแง่ SQL นั้น QuerySet จะเท่ากับคำสั่ง SELECT และตัวกรองคือส่วนคำสั่งจำกัด เช่น WHERE หรือ LIMIT

https://docs.djangoproject.com/en/1.8/topics/db/queries/

person Harshit Garg    schedule 17.11.2015

QuerySet คือรายการออบเจ็กต์ของโมเดลที่กำหนด QuerySet ช่วยให้คุณสามารถอ่านข้อมูลจากฐานข้อมูลได้

person Pythonsguru    schedule 23.08.2019