按子页面日期排序的列表
Ordering list by date of child page
所以我有一个显示各个博客页面的列表,它们目前按上次更新顺序排列。但是我希望它们按 post.specific.date
排序。我怎样才能做到这一点?如果需要更多代码来帮助请说。
{% for post in posts %}
<div class="...">
<div class="...">
{% for item in post.specific.blogpage_images.all|slice:"1" %}
{% image item.image fill-400x400-c100 %}
<p>{{ item.caption }}</p>
{% endfor %}
</div>
<div class="...">
<h3 class="...">{{ post.title }}</h3>
<h5>{{ post.specific.intro }} <span
class="...">{{ post.specific.date }}</span></h5>
</div>
<div class="...">
{{ post.specific.body|richtext }}
<div class="...">
<div class="...">
<p>
<button class="..."><b><a
class="effect-shine"
href="{% pageurl post %}">READ
MORE »</a></b>
</button>
</p>
</div>
<div class="...">
<p>
<span class="...">
<span class="...">
<a href="{% pageurl post %}#disqus_thread"> _
</a>
</span>
</span>
</p>
</div>
</div>
</div>
</div>
<hr>
{% endfor %}
我的views.py代码如下
def home(request):
posts. Post.objects.all()
paginator = Paginator(posts,4)
page = request.GET.get('page')
return render(request, 'base/home.html',{'posts':posts})
Models.py也如下
class BlogIndexPage(Page):
def get_context(self, request, *args, **kwargs):
context = super().get_context(request, *args, **kwargs)
all_posts = BlogPage.objects.live().public().order_by('-first_published_at')
paginator = Paginator(all_posts, 4)
page = request.GET.get("page")
try:
posts = paginator.page(page)
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
context["posts"] = posts
return context
class BlogPage(Page):
您可以使用内置的 sorted
函数对任何 list
进行排序,并且您可以为其指定正确的 key
函数,以按您想要的方式进行排序:
sorted(posts, key=lambda p: p.specific.date)
您也可以将它用作循环的一部分:
{% for post in sorted(posts, key=lambda p: p.specific.date) %}
所以我有一个显示各个博客页面的列表,它们目前按上次更新顺序排列。但是我希望它们按 post.specific.date
排序。我怎样才能做到这一点?如果需要更多代码来帮助请说。
{% for post in posts %}
<div class="...">
<div class="...">
{% for item in post.specific.blogpage_images.all|slice:"1" %}
{% image item.image fill-400x400-c100 %}
<p>{{ item.caption }}</p>
{% endfor %}
</div>
<div class="...">
<h3 class="...">{{ post.title }}</h3>
<h5>{{ post.specific.intro }} <span
class="...">{{ post.specific.date }}</span></h5>
</div>
<div class="...">
{{ post.specific.body|richtext }}
<div class="...">
<div class="...">
<p>
<button class="..."><b><a
class="effect-shine"
href="{% pageurl post %}">READ
MORE »</a></b>
</button>
</p>
</div>
<div class="...">
<p>
<span class="...">
<span class="...">
<a href="{% pageurl post %}#disqus_thread"> _
</a>
</span>
</span>
</p>
</div>
</div>
</div>
</div>
<hr>
{% endfor %}
我的views.py代码如下
def home(request):
posts. Post.objects.all()
paginator = Paginator(posts,4)
page = request.GET.get('page')
return render(request, 'base/home.html',{'posts':posts})
Models.py也如下
class BlogIndexPage(Page):
def get_context(self, request, *args, **kwargs):
context = super().get_context(request, *args, **kwargs)
all_posts = BlogPage.objects.live().public().order_by('-first_published_at')
paginator = Paginator(all_posts, 4)
page = request.GET.get("page")
try:
posts = paginator.page(page)
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
context["posts"] = posts
return context
class BlogPage(Page):
您可以使用内置的 sorted
函数对任何 list
进行排序,并且您可以为其指定正确的 key
函数,以按您想要的方式进行排序:
sorted(posts, key=lambda p: p.specific.date)
您也可以将它用作循环的一部分:
{% for post in sorted(posts, key=lambda p: p.specific.date) %}