#python #django #django-models #django-views
#питон #django #django-модели #django-просмотры #python
Вопрос:
Я хочу упорядочить свои данные в Django admin в порядке убывания, но я хочу, чтобы поле null, представляющее задачу, которая не завершилась, было первым в порядке убывания дат.
например
Дата окончания указана следующим образом
—
5 декабря 2018
2,2017 марта
и не так
5 декабря 2018
2,2017 марта
—
в моем view.py Я пробовал таким образом
class TaskViewset(Viewsets.ModelViewset)
queryset = Task.objects.filter(end_date__isnull=True).order_by("-end_date")
Это ограничивает то, что было возвращено обратно только к данным, где end_date равно нулю.
Как я могу это сделать, чтобы вернуть данные, включая те задачи, которые завершились, возвращая сначала незаконченную задачу?
Спасибо за вашу помощь.
Ответ №1:
Использование F() для сортировки нулевых значений
Используйте F() и аргумент ключевого слова nulls_first или nulls_last для Expression.asc() или desc() для управления порядком нулевых значений поля. По умолчанию порядок зависит от вашей базы данных.
Например, для сортировки компаний, с которыми не связывались (last_contacted равно нулю), после компаний, с которыми связывались:
from django.db.models import F Company.objects.order_by(F('last_contacted').desc(nulls_last=True))
Комментарии:
1. Спасибо, iklinac, но в моем admin.py у меня есть класс, который использует упорядочивание. Изменения, внесенные в ваш ответ, пока не применяются из-за порядка в admin.py , есть ли у вас какие-либо предложения о том, как это настроить? ниже приведен код в admin.py
class TaskAdmin(admin.ModelAdmin): ordering = ("-end_date",)
это требует корректировки в поле упорядочения.2. порядок в представлении не имеет ничего общего с порядком на сайте администратора, ваш вопрос был связан с порядком в представлении
3. Да, вы правы. просмотр выполняется сейчас, но в admin то, как это было упорядочено в view, не упорядочено таким образом в admin. Ответ правильный в представлении обработки, просто хочу знать, как это можно исправить с помощью администратора. Большое спасибо, если у вас есть какие-либо предложения, пожалуйста, не стесняйтесь поделиться.
4. docs.djangoproject.com/en/dev/ref/models/options/#ordering