คำถามติดแท็ก django-orm

ระบบ ORM ของ Django ประกอบด้วยระบบแบบสอบถามและระบบโมเดล

3
วิธีการหรือเงื่อนไขในชุดแบบสอบถาม django?
ฉันต้องการเขียนแบบสอบถาม Django ที่เทียบเท่ากับแบบสอบถาม SQL นี้: SELECT * from user where income >= 5000 or income is NULL. วิธีสร้างตัวกรองชุดการสืบค้น Django User.objects.filter(income__gte=5000, income=0) สิ่งนี้ไม่ทำงานเพราะมันANDเป็นตัวกรอง ฉันต้องการORตัวกรองเพื่อรับชุดแบบสอบถามแต่ละชุด

4
ความแตกต่างระหว่าง select_related และ prefetch_related ใน Django ORM คืออะไร
ใน Django doc select_related() "ตาม" ความสัมพันธ์กับคีย์ต่างประเทศเลือกข้อมูลวัตถุที่เกี่ยวข้องเพิ่มเติมเมื่อเรียกใช้งานแบบสอบถาม prefetch_related() ทำการค้นหาแยกต่างหากสำหรับแต่ละความสัมพันธ์และทำการ "เข้าร่วม" ใน Python การทำการเข้าร่วมใน python หมายความว่าอย่างไร บางคนสามารถอธิบายด้วยตัวอย่างได้หรือไม่? ความเข้าใจของฉันคือว่าสำหรับความสัมพันธ์ต่างประเทศที่สำคัญการใช้select_related; และสำหรับความสัมพันธ์ M2M, prefetch_relatedการใช้งาน ถูกต้องหรือไม่

4
Django คีย์ต่างประเทศแบบอ้างอิงตัวเอง
ฉันเป็นคนใหม่สำหรับ webapps และฐานข้อมูลโดยทั่วไปดังนั้นนี่อาจเป็นคำถามที่โง่ ฉันต้องการสร้างแบบจำลอง ("CategoryModel") ด้วยฟิลด์ที่ชี้ไปที่ id หลักของอินสแตนซ์อื่นของแบบจำลอง (แม่ของมัน) class CategoryModel(models.Model): parent = models.ForeignKey(CategoryModel) ฉันจะทำสิ่งนี้ได้อย่างไร ขอบคุณ!

8
วิธีการดูแบบสอบถาม SQL ที่สอดคล้องกันของชุดแบบสอบถามของ Django ORM?
มีวิธีที่ฉันสามารถพิมพ์คิวรี่ที่ Django ORM กำลังสร้างได้หรือไม่? ว่าฉันรันคำสั่งต่อไปนี้: Model.objects.filter(name='test') ฉันจะดูแบบสอบถาม SQL ที่สร้างขึ้นได้อย่างไร

3
Django values_list เทียบกับค่า
ใน Django ความแตกต่างระหว่างสองสิ่งต่อไปนี้คืออะไร: Article.objects.values_list('comment_id', flat=True).distinct() VS Article.objects.values('comment_id').distinct() เป้าหมายของฉันคือการรับรายการรหัสความคิดเห็นที่ไม่ซ้ำกันในแต่ละArticleรายการ ฉันได้อ่านเอกสาร (และอันที่จริงได้ใช้วิธีการทั้งสอง) ผลลัพธ์ดูเหมือนจะเปิดเผยโดยเปิดเผย

6
วิธีการสร้างวัตถุสำหรับรุ่น Django ที่มีหลายฟิลด์ถึงมาก?
โมเดลของฉัน: class Sample(models.Model): users = models.ManyToManyField(User) ฉันต้องการบันทึกทั้งสองuser1และuser2ในรูปแบบที่: user1 = User.objects.get(pk=1) user2 = User.objects.get(pk=2) sample_object = Sample(users=user1, users=user2) sample_object.save() ฉันรู้ว่ามันผิด แต่ฉันแน่ใจว่าคุณได้สิ่งที่ฉันต้องการ คุณจะทำอย่างไร

5
การเชื่อมโยงหลายตัวกรอง () ใน Django นี่เป็นข้อบกพร่องหรือไม่?
ฉันคิดเสมอว่าการเชื่อมโยงการโทรหลายตัวกรอง () ใน Django นั้นเหมือนกับการรวบรวมในการโทรครั้งเดียวเสมอ # Equivalent Model.objects.filter(foo=1).filter(bar=2) Model.objects.filter(foo=1,bar=2) แต่ฉันได้พบกับ Queryset ที่ซับซ้อนในรหัสของฉันซึ่งไม่เป็นเช่นนั้น class Inventory(models.Model): book = models.ForeignKey(Book) class Profile(models.Model): user = models.OneToOneField(auth.models.User) vacation = models.BooleanField() country = models.CharField(max_length=30) # Not Equivalent! Book.objects.filter(inventory__user__profile__vacation=False).filter(inventory__user__profile__country='BR') Book.objects.filter(inventory__user__profile__vacation=False, inventory__user__profile__country='BR') SQL ที่สร้างขึ้นคือ SELECT "library_book"."id", "library_book"."asin", "library_book"."added", "library_book"."updated" FROM "library_book" INNER JOIN "library_inventory" ON ("library_book"."id" = "library_inventory"."book_id") …
114 django  django-orm 

9
เหตุใดการวนซ้ำผ่าน Django QuerySet ขนาดใหญ่จึงใช้หน่วยความจำจำนวนมาก
ตารางที่เป็นปัญหามีประมาณสิบล้านแถว for event in Event.objects.all(): print event สิ่งนี้ทำให้การใช้หน่วยความจำเพิ่มขึ้นเรื่อย ๆ เป็น 4 GB หรือมากกว่านั้นซึ่งทำให้แถวต่างๆพิมพ์อย่างรวดเร็ว ความล่าช้าที่ยาวนานก่อนที่แถวแรกจะพิมพ์ทำให้ฉันประหลาดใจ - ฉันคาดว่ามันจะพิมพ์ได้เกือบจะในทันที ฉันยังพยายามEvent.objects.iterator()ที่มีพฤติกรรมแบบเดียวกัน ฉันไม่เข้าใจว่า Django กำลังโหลดอะไรลงในหน่วยความจำหรือเหตุใดจึงทำเช่นนี้ ฉันคาดว่า Django จะวนซ้ำผลลัพธ์ในระดับฐานข้อมูลซึ่งหมายความว่าผลลัพธ์จะถูกพิมพ์ในอัตราคงที่โดยประมาณ (แทนที่จะเป็นทั้งหมดในครั้งเดียวหลังจากรอเป็นเวลานาน) ฉันเข้าใจผิดอะไร (ฉันไม่รู้ว่ามันเกี่ยวข้องหรือเปล่า แต่ฉันใช้ PostgreSQL)

3
เลือกค่าที่แตกต่างจากเขตข้อมูลตาราง
ฉันดิ้นรนที่จะเอาหัวไปรอบ ORM ของ Django สิ่งที่ฉันต้องการทำคือรับรายการค่าที่แตกต่างกันภายในฟิลด์บนตารางของฉัน .... เทียบเท่ากับค่าใดค่าหนึ่งต่อไปนี้: SELECT DISTINCT myfieldname FROM mytable (หรืออีกทางเลือกหนึ่ง) SELECT myfieldname FROM mytable GROUP BY myfieldname อย่างน้อยฉันก็อยากจะทำแบบ Django ก่อนที่จะหันมาใช้ Raw sql ตัวอย่างเช่นมีตาราง: id ถนนเมือง 1 ถนนสายหลักฮัลล์ 2, ถนนอื่น ๆ , ฮัลล์ 3, Bibble Way, เลสเตอร์ 4 อีกทางหนึ่งเลสเตอร์ 5, High Street, Londidium ฉันต้องการรับ: ฮัลล์เลสเตอร์ Londidium


5
จะเปลี่ยนชื่อรายการในค่า () ใน Django ได้อย่างไร?
ฉันต้องการทำเหมือนในตั๋วนี้ที่ djangoproject.comแต่มีการจัดรูปแบบเพิ่มเติมบางอย่าง จากแบบสอบถามนี้ >>> MyModel.objects.values('cryptic_value_name') [{'cryptic_value_name': 1}, {'cryptic_value_name': 2}] ฉันอยากได้อะไรแบบนั้น: >>> MyModel.objects.values(renamed_value='cryptic_value_name') [{'renamed_value': 1}, {'renamed_value': 2}] มีวิธีอื่นในตัวมากกว่านี้หรือฉันต้องทำด้วยตนเองหรือไม่?
102 django  django-orm 

5
Django เลือกเฉพาะแถวที่มีค่าฟิลด์ซ้ำกัน
สมมติว่าเรามีโมเดลใน django ที่กำหนดไว้ดังนี้: class Literal: name = models.CharField(...) ... ฟิลด์ชื่อไม่ซ้ำกันและอาจมีค่าที่ซ้ำกันได้ ฉันต้องการทำงานต่อไปนี้ให้สำเร็จ: เลือกแถวทั้งหมดจากโมเดลที่มีค่าที่ซ้ำกันอย่างน้อยหนึ่งค่าของnameฟิลด์ ฉันรู้วิธีทำโดยใช้ SQL ธรรมดา (อาจไม่ใช่วิธีแก้ปัญหาที่ดีที่สุด): select * from literal where name IN ( select name from literal group by name having count((name)) > 1 ); ดังนั้นเป็นไปได้ไหมที่จะเลือกสิ่งนี้โดยใช้ django ORM? หรือโซลูชัน SQL ที่ดีกว่า?
99 sql  django  django-orm 

4
เลือก DISTINCT แต่ละคอลัมน์ใน django?
ฉันสงสัยว่ามีวิธีใดในการค้นหาใน Django ที่ไม่ใช่ " SELECT * FROM..." ที่อยู่ข้างใต้ ฉันกำลังพยายามทำ " SELECT DISTINCT columnName FROM ..." แทน โดยเฉพาะฉันมีโมเดลที่ดูเหมือน: class ProductOrder(models.Model): Product = models.CharField(max_length=20, promary_key=True) Category = models.CharField(max_length=30) Rank = models.IntegerField() โดยที่Rankเป็นอันดับภายในCategory. ฉันต้องการที่จะทำซ้ำทุกหมวดหมู่เพื่อดำเนินการบางอย่างกับแต่ละอันดับภายในหมวดหมู่นั้น ฉันต้องการรับรายการหมวดหมู่ทั้งหมดในระบบก่อนจากนั้นค้นหาผลิตภัณฑ์ทั้งหมดในหมวดหมู่นั้นและทำซ้ำจนกว่าทุกหมวดหมู่จะได้รับการประมวลผล ฉันควรหลีกเลี่ยง SQL ดิบ แต่ถ้าฉันต้องไปที่นั่นก็ไม่เป็นไร แม้ว่าฉันจะไม่เคยเข้ารหัส SQL ดิบใน Django / Python มาก่อน

4
Django กรองแบบกลุ่มต่อกลุ่มด้วยประกอบด้วย
ฉันพยายามกรองวัตถุจำนวนมากผ่านความสัมพันธ์แบบกลุ่มต่อกลุ่ม เนื่องจากtrigger_rolesช่องอาจมีหลายรายการฉันจึงลองใช้containsตัวกรอง แต่ตามที่ออกแบบมาเพื่อใช้กับสตริงฉันค่อนข้างทำอะไรไม่ถูกเลยว่าฉันควรกรองความสัมพันธ์นี้อย่างไร (คุณสามารถเพิกเฉยต่อvalues_list()atm ได้) ฟังก์ชันนี้แนบกับโปรไฟล์ผู้ใช้: def getVisiblePackages(self): visiblePackages = {} for product in self.products.all(): moduleDict = {} for module in product.module_set.all(): pkgList = [] involvedStatus = module.workflow_set.filter(trigger_roles__contains=self.role.id,allowed=True).values_list('current_state', flat=True) โมเดลเวิร์กโฟลว์ของฉันมีลักษณะดังนี้ (แบบง่าย): class Workflow(models.Model): module = models.ForeignKey(Module) current_state = models.ForeignKey(Status) next_state = models.ForeignKey(Status) allowed = models.BooleanField(default=False) involved_roles = models.ManyToManyField(Role, blank=True, null=True) …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.