Django如何按日期对ListView进行排序

6

我正在处理一些继承自开发人员的 Django 代码,需要做一个非常简单的更改。在代码中,有一个通过 Django ListView 显示的工作列表。我的问题非常简单。当我进入页面时,我看到的工作按日期排序,最早的排在前面。我想要相反顺序地排序这些工作。目前我不需要任何过滤、传递 URL 参数等功能。以下是文件的相关部分:

#models.py
from django.db import models
class Job(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    position =  models.ManyToManyField(Position)
    title = models.CharField(max_length=100)

#views.py
from .models import Job
class JobListView(ListView):
    template_name="jobs/list.html"
    model = Job
    paginate_by = 10

#list.html
{% for job in object_list %}
    <li class="display-list-item">
        <h4><strong><a href="{% url 'job_detail' pk=job.pk %}">{{job.title}}</a></strong></h4>
        <ul class="list-inline job-info-list">                                                    
            <span>{{job.created | timesince}} ago</span>
        </ul>               
    </li>
{% endfor %}


#urls.py
urlpatterns = [
url('^$', views.JobListView.as_view(), name='job_list')
]

如前所述,这将导致作业按“创建”字段排序显示。先创建的作业会先展示。那么让后创建的作业先展示,最快的方法是什么?

1个回答

10

第一种方法

models.py

from django.db import models
class Job(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    position =  models.ManyToManyField(Position)
    title = models.CharField(max_length=100)

    class Meta:
       ordering = ['-created']

第二种方法

views.py

from .models import Job
class JobListView(ListView):
    template_name="jobs/list.html"
    queryset = Job.objects.order_by('-created')
    paginate_by = 10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接