Django заказ по нескольким полям - PullRequest
0 голосов
/ 05 августа 2020

У меня странная проблема с заказом django. По какой-то причине я не могу упорядочить представление списка по нескольким полям.

Вот мой класс.

class Syslog(models.Model):

    receivedat = models.DateTimeField(default=timezone.now)
    facility = models.PositiveSmallIntegerField()
    priority = models.PositiveSmallIntegerField()
    fromHost = models.CharField(max_length=50)
    message = models.TextField(max_length=500)

    class Meta:
           ordering = ['id','receivedat', 'fromHost']

Вот и мой класс просмотра:

class HomePageView(ListView):
    model = Syslog
    template_name = 'home.html'
    context_object_name = 'all_logs'
    paginate_by = 10
    ordering = ['-id', 'receivedat', 'fromHost']

Когда указано одно поле в ordering (например, ordering = ['-id']), но когда я добавляю второй или третий параметр, все возвращается к значениям по умолчанию (распознается только первое поле упорядочивания)

Кто-нибудь сталкивался с подобной проблемой?

Та же проблема сохраняется и в оболочке Django. Когда я выполняю следующий запрос Syslog.objects.all().order_by('id'), все выглядит хорошо, но когда я добавляю еще одно поле в order_by (например, Syslog.objects.all().order_by('id','fromHost')), второе поле вообще не распознается.

С уважением, Джордан

Ответы [ 2 ]

2 голосов
/ 05 августа 2020

Вместо этого -> Syslog.objects.all().order_by('id','fromHost')

Используйте это -> Syslog.objects.order_by('id','fromHost')

удалить .all()

0 голосов
/ 06 августа 2020

Выспавшись на своей проблеме, я понял, почему я не получил ожидаемого результата. Проблема в том, что мой набор данных для разработки очень похож, и хотя порядок изменений не отражается на шаблоне из-за схожести объектов.

...