如何逐项列出/编辑/删除自定义过滤器返回的结果

时间:2011-06-29 21:01:32

标签: django django-templates django-views

这是我的过滤器:

@register.filter
def filter_by_user(queryset, user):
    """Filter the queryset by (currently logged in) user"""
    return queryset.filter(accountowner=user)

这是我的模板:

<td>{{ object_list.all|filter_by_user:user|safeseq|join:". " }}</td>

这是输出:

ACB test 5.0 55.0. ACB test 14.0 144.0 

这是我宁愿拥有的

1. ACB test 5.0 55.0 Edit Delete

2. ACB test 14.0 144.0 Edit Delete

2 个答案:

答案 0 :(得分:1)

使用unordered_list而不是join - 尽管名称如此,如果您将其包装在<ol>...</ol>标签中,它将是一个有序列表。

但是,您应该在视图中执行此操作。

修改

实际上,这是一个更好的解决方案:

<ol>
{% for obj in object_list.all|filter_by_user:user %}
    <li>{{ obj }} <a href="{% url edit_object obj.id %}">Edit</a> <a href="{% url delete_object obj.id %}"Delete</a></li>
{% endfor %}
</ol>

当然,这取决于您在urlconf中有edit_objectdelete_object个网址。

答案 1 :(得分:0)

那么,您需要将结果保存在变量中,然后遍历它,构建链接。不要对过滤器中的链接进行硬编码。