سؤال

لدي نماذج Django هي قوائم العناصر وأريد العناصر الموجودة في كل قائمة للحصول على ترتيب فرز منفصل. اسم القائمة 1 سوف فرز عناصر الخط بالاسم، قائمة 2 حسب التاريخ، وقائمة 3 حسب الأولوية.

النماذج تبدو أكثر أو أقل مثل هذا:

class ListItem(models.Model):
    priority = models.IntegerField(choices=PRIORITY_CHOICES)
    name = models.CharField(max_length=240)
    due_date = models.DateTimeField(null=True, blank=True)
    list = models.ForeignKey(List)

الآن أنا أستخدم هذا الاستعلام في رأيي:

lists = List.objects.filter(user=request.user)
return render_to_response('showlists.html', {'lists': lists })

لقد قرأت أمثلة تعني أنني أستطيع أن أفعل شيئا مثل هذا:

lists = List.objects.filter(user=request.user).select_related().order_by("items.name")

على افتراض أنه عمل، سيعطيني مجموعة من القوائم مع ترتيب فرز متطابق لكل دفعة من العناصر. كيف أذهب حول فرز العناصر ذات الصلة لكل قائمة فردية بشكل مختلف؟

هل كانت مفيدة؟

المحلول

بناء الجملة للطلب عبر النماذج ذات الصلة هو نفس التنسيق المزدوج تحت التشطيب filter, ، حتى تتمكن من ذلك:

List.objects.filter(user=request.user).select_related().order_by("listitems__name")

يجب عليك فقط استخدام الحقول المختلفة بنفس الطريقة في order_by يتصل.

نصائح أخرى

إذا كانت القوائم صغيرة، فيمكنك ذلك تفعل ذلك في بيثون, باستخدام فرز ووضع علامات

list = <...code to get sublist here ...>
list.sort(key=lambda x: x.due_date) #sort by due date, say

خلاف ذلك ينطلق استعلام لكل قائمة فرعية

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top