Django 获取摇尾页面模型的随机对象,但不获取当前对象

Django 获取摇尾页面模型的随机对象,但不获取当前对象,django,django-templates,wagtail,Django,Django Templates,Wagtail,我有一个模板上下文处理器: from cases.models import CasePage def random_case(request): case = CasePage.objects.live().order_by('?') return {'random_case': case} 在模板中,我执行以下操作: {% for entry in random_case %} {% if request.get_full_path != entry.get_url %}

我有一个模板上下文处理器:

from cases.models import CasePage

def random_case(request):
    case = CasePage.objects.live().order_by('?')
    return {'random_case': case}
在模板中,我执行以下操作:

{% for entry in random_case %}
{% if request.get_full_path != entry.get_url %}
{% if forloop.first %}

<a  class="ajax-link project-next" href="{{ entry.get_url }}">
<div class="nav-project-title">{{ entry.title }}</div>
<div class="nav-title">next</div>     
</a>

{% endif %}
{% endif %}
{% endfor %}
{%用于随机情况下的条目%}
{%if request.get_full_path!=entry.get_url%}
{%if-forloop.first%}
{%endif%}
{%endif%}
{%endfor%}

这是可行的,但问题是有时对象与页面相同,所以什么也不显示。如果为了下一个条目而跳过这一条,那就太好了。对我来说,模板中的逻辑也太多了。将此逻辑移动到上下文处理器并使其工作的最佳方法是什么?

随机案例
作为
案例页面
的一种方法,并过滤掉ID等于
self
的案例

class CasePage(Page):
    # ...
    def random_case(self):
        return CasePage.objects.live().exclude(id=self.id).order_by('?').first()
然后,您可以在模板中将此方法称为
page.random\u case
-请记住,每次调用都会进行一个新的随机选择,因此您可能需要类似
{%with page.random\u case as case%}
的内容