我正在尝试做类似的事情:
{% for property in current_listing %}
{% for property_image in property.property_images.all %}
{% endfor %}
{% endfor %}
但我想要像:
{% for property in current_listing %}
{% for property_image in property.property_images.**ORDER_BY('-order')[0]** %}
{% endfor %}
{% endfor %}
我该怎么做?
答案 0 :(得分:3)
如果我了解您的需求,可以尝试custom template filter:
from django import template
register = template.Library()
@register.filter
def get_first_ordered_by(queryset, order):
return queryset.order_by(order)[0]
然后在模板上:
{% load my_tags %}
{% with image=property.property_images.all|get_first_ordered_by:'-order' %}
{{ image }}
{% endwith %}
请注意,由于get_first_ordered_by
的结果不可迭代,因此您无法使用{%for%}。
答案 1 :(得分:0)
您可以向Model的类定义添加一个返回所需查询的方法,然后从您的模板中获取该方法。