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

Django querysets เป็นนามธรรมหลักสำหรับการดึงวัตถุจากระบบ ORM ของ Django

15
ฉันจะทำไม่เท่ากันในการกรองชุดการสืบค้น Django ได้อย่างไร
ใน Django model QuerySets ฉันเห็นว่ามี__gtและ__ltสำหรับค่าเปรียบเทียบ แต่มี a __ne/ !=/ <>( ไม่เท่ากับ ?) ฉันต้องการที่จะกรองโดยใช้ไม่เท่ากับ: ตัวอย่าง: Model: bool a; int x; ฉันต้องการ results = Model.objects.exclude(a=true, x!=5) !=ไม่ไวยากรณ์ที่ถูกต้อง ฉันพยายาม__neแล้ว, <>. ฉันสิ้นสุดการใช้: results = Model.objects.exclude(a=true, x__lt=5).exclude(a=true, x__gt=5)

12
วิธีรวมแบบสอบถามสองชุดขึ้นไปในมุมมอง Django
ฉันพยายามสร้างการค้นหาเว็บไซต์ Django ที่ฉันกำลังสร้างและในการค้นหานั้นฉันกำลังค้นหาใน 3 แบบที่แตกต่างกัน และเพื่อให้ได้เลขหน้าในรายการผลการค้นหาฉันต้องการใช้มุมมอง object_list ทั่วไปเพื่อแสดงผลลัพธ์ แต่การทำเช่นนั้นฉันต้องรวม 3 ชุดแบบสอบถามเป็นหนึ่ง ฉันจะทำสิ่งนั้นได้อย่างไร ฉันเคยลองแล้ว: result_list = [] page_list = Page.objects.filter( Q(title__icontains=cleaned_search_term) | Q(body__icontains=cleaned_search_term)) article_list = Article.objects.filter( Q(title__icontains=cleaned_search_term) | Q(body__icontains=cleaned_search_term) | Q(tags__icontains=cleaned_search_term)) post_list = Post.objects.filter( Q(title__icontains=cleaned_search_term) | Q(body__icontains=cleaned_search_term) | Q(tags__icontains=cleaned_search_term)) for x in page_list: result_list.append(x) for x in article_list: result_list.append(x) for x …

7
การกรองสำหรับชื่อว่างหรือ NULL ในชุดแบบสอบถาม
ฉันมีfirst_name, last_nameและalias(อุปกรณ์เสริม) ซึ่งผมต้องค้นหา ดังนั้นฉันต้องการแบบสอบถามเพื่อให้ชื่อทั้งหมดที่มีชื่อแทน เฉพาะในกรณีที่ฉันสามารถทำได้: Name.objects.filter(alias!="") ดังนั้นสิ่งที่เทียบเท่ากับข้างต้นคืออะไร?

6
ฉันจะทำฟิลเตอร์ OR ในเคียวรี Django ได้อย่างไร
ฉันต้องการให้สามารถแสดงรายการที่ผู้ใช้เพิ่ม (รายการถูกระบุว่าเป็นผู้สร้าง) หรือรายการนั้นได้รับการอนุมัติแล้ว ดังนั้นโดยทั่วไปฉันต้องเลือก: item.creator = owner or item.moderated = False ฉันจะทำสิ่งนี้ใน 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ตัวกรองเพื่อรับชุดแบบสอบถามแต่ละชุด

3
ฉันจะกรองเคียวรี Django ด้วยรายการค่าได้อย่างไร
ฉันแน่ใจว่านี่เป็นการดำเนินการที่ไม่สำคัญ แต่ฉันไม่สามารถทราบได้ว่ามันเสร็จสิ้นแล้ว จะต้องมีสิ่งที่ฉลาดกว่านี้: ids = [1, 3, 6, 7, 9] for id in ids: MyModel.objects.filter(pk=id) ฉันต้องการให้พวกเขาทั้งหมดในแบบสอบถามเดียวกับสิ่งที่ชอบ: MyModel.objects.filter(pk=[1, 3, 6, 7, 9]) ฉันจะกรองเคียวรี Django ด้วยรายการค่าได้อย่างไร

7
ฉันจะกรองวัตถุคิวรี่ตามช่วงวันที่ใน Django ได้อย่างไร
ฉันมีฟิลด์ในหนึ่งโมเดลเช่น: class Sample(models.Model): date = fields.DateField(auto_now=False) ตอนนี้ฉันต้องกรองวัตถุตามช่วงวันที่ ฉันจะกรองวัตถุทั้งหมดที่มีวันที่ระหว่าง1-Jan-2011และ31-Jan-2011อย่างไร

17
ฉันจะได้รับวัตถุถ้ามันมีอยู่หรือไม่มีถ้ามันไม่ได้อยู่?
เมื่อฉันขอให้ตัวจัดการโมเดลรับวัตถุมันจะเพิ่มขึ้นDoesNotExistเมื่อไม่มีวัตถุที่ตรงกัน go = Content.objects.get(name="baby") แทนที่จะเป็นDoesNotExistฉันgoจะNoneเป็นอย่างไร

7
ตรวจสอบชุดสืบค้นว่างใน Django
สำนวนที่แนะนำสำหรับการตรวจสอบว่าแบบสอบถามส่งกลับผลลัพธ์ใด ๆ ? ตัวอย่าง: orgs = Organisation.objects.filter(name__iexact = 'Fjuk inc') # If any results # Do this with the results without querying again. # Else, do something else... ฉันคิดว่ามีหลายวิธีในการตรวจสอบสิ่งนี้ แต่ฉันต้องการทราบว่าผู้ใช้ Django ที่มีประสบการณ์จะทำเช่นไร ตัวอย่างส่วนใหญ่ในเอกสารเพิ่งเพิกเฉยกรณีที่ไม่พบสิ่งใด ...

1
จะกรองน้อยกว่าหรือเท่ากับในชุดคำถาม Django ได้อย่างไร
ฉันพยายามกรองผู้ใช้ตามฟิลด์ที่กำหนดเองในโปรไฟล์ผู้ใช้แต่ละโปรไฟล์ที่เรียกว่าโปรไฟล์ ฟิลด์นี้เรียกว่าระดับและเป็นจำนวนเต็มระหว่าง 0-3 หากฉันกรองโดยใช้เท่ากับฉันจะได้รับรายชื่อผู้ใช้ในระดับที่เลือกตามที่คาดไว้: user_list = User.objects.filter(userprofile__level = 0) เมื่อฉันพยายามกรองโดยใช้น้อยกว่า: user_list = User.objects.filter(userprofile__level < 3) ฉันได้รับข้อผิดพลาด: ไม่ได้กำหนดชื่อโกลบอล 'userprofile__level' มีวิธีการกรองโดย <หรือ> หรือฉันเห่าต้นไม้ผิด

14
ฉันจะกรองวันที่ของ DateTimeField ใน Django ได้อย่างไร
ฉันพยายามกรองการDateTimeFieldเปรียบเทียบกับวันที่ ฉันหมายถึง: MyObject.objects.filter(datetime_attr=datetime.date(2009,8,22)) ฉันได้รับรายการชุดแบบสอบถามที่ว่างเปล่าเป็นคำตอบเพราะ (ฉันคิดว่า) ฉันไม่ได้พิจารณาเวลา แต่ฉันต้องการ "ตลอดเวลา" Django มีวิธีที่ง่ายในการทำเช่นนี้หรือไม่? ฉันมีเวลาที่กำหนดไว้ใน datetime มันไม่ใช่ 00:00ก็ไม่ได้เป็น

13
ตัวกรอง Django เทียบกับรับวัตถุเดียวหรือไม่
ฉันกำลังถกเถียงเรื่องนี้กับเพื่อนร่วมงานบางคน มีวิธีที่ต้องการในการดึงข้อมูลวัตถุใน Django เมื่อคุณต้องการเพียงวัตถุเดียวหรือไม่? สองวิธีที่ชัดเจนคือ: try: obj = MyModel.objects.get(id=1) except MyModel.DoesNotExist: # We have no object! Do something... pass และ: objs = MyModel.objects.filter(id=1) if len(objs) == 1: obj = objs[0] else: # We have no object! Do something... pass วิธีแรกดูเหมือนจะมีพฤติกรรมที่ถูกต้องมากขึ้น แต่ใช้ข้อยกเว้นในโฟลว์การควบคุมซึ่งอาจแนะนำค่าใช้จ่ายบางอย่าง ที่สองคือวงเวียนมากขึ้น แต่จะไม่ยกข้อยกเว้น มีความคิดเห็นใดเกี่ยวกับข้อใดที่เป็นที่นิยมมากกว่านี้? อันไหนมีประสิทธิภาพมากกว่ากัน?

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

4
เลือกและอัปเดตเรกคอร์ดฐานข้อมูลด้วยแบบสอบถามเดียว
ฉันจะเรียกใช้คำสั่งupdateและselectคำสั่งเดียวกันได้อย่างไรquerysetแทนที่จะต้องทำสองแบบสอบถาม: - หนึ่งเพื่อเลือกวัตถุ - และหนึ่งเพื่ออัปเดตวัตถุ สิ่งที่เทียบเท่าใน SQL จะเป็นดังนี้: update my_table set field_1 = 'some value' where pk_field = some_value

3
ความแตกต่างระหว่างคำอธิบายประกอบของ Django และวิธีการรวม?
Django QuerySetมีสองวิธีannotateและaggregate. เอกสารระบุว่า: ซึ่งแตกต่างจาก aggregate (), annotate () ไม่ใช่ Terminal clause ผลลัพธ์ของอนุประโยค annotate () คือ QuerySet มีความแตกต่างอื่น ๆ ระหว่างพวกเขาหรือไม่? ถ้าไม่แล้วทำไมถึงaggregateมีอยู่?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.