Django-tables2: السماح للأعمدة ذات الفرز التنازلي بوضع القيم الفارغة في أسفل العمود

تم إنشاؤها على ٢ أغسطس ٢٠١٨  ·  6تعليقات  ·  مصدر: jieter/django-tables2

عند العمل مع الأعمدة التنازلية في # 595 و # 597 ، صادفت بعض سلوك الفرز التنازلي الذي يبدو قليلاً.

ضع في اعتبارك مجموعة من البيانات مثل هذا:

| سجل | القيمة |
| --- | --- |
| أ | 3 |
| ب | 1 |
| ج | - |
| د | - |

عند فرز عمود القيمة بترتيب تصاعدي ، يتم دفع القيم الفارغة إلى أسفل القائمة:

| سجل | القيمة |
| --- | --- |
| ب | 1 |
| أ | 3 |
| ج | - |
| د | - |

ولكن عند الفرز بترتيب تنازلي ، يتم وضع القيم الفارغة في أعلى القائمة:

| سجل | القيمة |
| --- | --- |
| ج | - |
| د | - |
| أ | 3 |
| ب | 1 |

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

التعليق الأكثر فائدة

هاه ، حسنًا ، ربما تحدثت بنفسي عن الحاجة إلى العلاقات العامة. في حالتي المثال ، يمكن تحقيق السلوك المطلوب باستخدام طريقة order_FOO() ، ومعلمة Django nulls_last . مثل ذلك:

def order_value(self, QuerySet, is_descending): if is_descending: QuerySet = QuerySet.order_by(F('value').desc(nulls_last = True)) else: QuerySet = QuerySet.order_by(F('value').asc(nulls_last = True)) return (QuerySet,True)

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

لقد اختبرت هذا الحل للحالات التي تكون فيها القيم فارغة ببساطة ولا تعمل. أظن أنه يمكن التوصل إلى حل عن طريق تعديل شيء ما ضمن سلوك django-tables2 order_by ، ولكن إذا كنا نتحدث عن حالة حافة على أي حال ، فربما يكون Sort-with-nulls-last order_FOO() الحل أفضل من العبث بالمصدر.

على أي حال ، يمكنني اعتبار طلبي مغلقًا. إذا طالب شخص آخر بمعاملة القيم الفارغة تمامًا بنفس الطريقة ، فربما يمكن إعادة النظر في العلاقات العامة.

ال 6 كومينتر

هل رأيت 529؟

أوه ، أراه الآن. حسنًا ، ربما يمكنني إلقاء نظرة على إنشاء علاقات عامة لذلك أيضًا.

سيكون موضع ترحيب كبير!

هاه ، حسنًا ، ربما تحدثت بنفسي عن الحاجة إلى العلاقات العامة. في حالتي المثال ، يمكن تحقيق السلوك المطلوب باستخدام طريقة order_FOO() ، ومعلمة Django nulls_last . مثل ذلك:

def order_value(self, QuerySet, is_descending): if is_descending: QuerySet = QuerySet.order_by(F('value').desc(nulls_last = True)) else: QuerySet = QuerySet.order_by(F('value').asc(nulls_last = True)) return (QuerySet,True)

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

لقد اختبرت هذا الحل للحالات التي تكون فيها القيم فارغة ببساطة ولا تعمل. أظن أنه يمكن التوصل إلى حل عن طريق تعديل شيء ما ضمن سلوك django-tables2 order_by ، ولكن إذا كنا نتحدث عن حالة حافة على أي حال ، فربما يكون Sort-with-nulls-last order_FOO() الحل أفضل من العبث بالمصدر.

على أي حال ، يمكنني اعتبار طلبي مغلقًا. إذا طالب شخص آخر بمعاملة القيم الفارغة تمامًا بنفس الطريقة ، فربما يمكن إعادة النظر في العلاقات العامة.

شكرا للتوضيح!

شكرا على هذا الحل الجميل foldedpaper :)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات