如何从django管理过滤器传递错误消息更改列表

时间:2017-12-12 21:31:21

标签: django django-admin

在我的更改列表管理页面上,我制作了一个自定义过滤器。 我希望能够在选择错误时向用户发送错误/警告消息。 (我知道默认情况下过滤器选择永远不会错,但我已将选择下拉列表转换为文本输入,因此某些值可能无效)

知道如何从过滤器发送错误消息吗? 这是我试过的:

#filter.py
class MyFilter(SimpleListFilter):
    title = ugettext_lazy('Score')
    parameter_name = 'Score'
    def lookups(self, request, model_admin):
        return [('0.9', 's>=0.9')]

    def queryset(self, request, queryset):
        try:
            something
        except Exception as ex:
            request.error_msg = 'xxx'
        return queryset


# admin.py
@admin.register(SomeModel)
class MyAdmin(CustomAdmin):
    list_filter = (MyFilter,)
    def get_queryset(self, request):
        if hasattr(request, 'error_msg'):
            print request.error_msg

发送" error_msg"到change_list管理模板并显示它。 另一个想法是重定向,但我不认为它可能来自过滤器。

1 个答案:

答案 0 :(得分:1)

messages framework可用于向用户显示错误,例如:

from django.contrib import messages


class MyFilter(SimpleListFilter):
    title = ugettext_lazy('Score')
    parameter_name = 'Score'

    def lookups(self, request, model_admin):
        return [('0.9', 's>=0.9')]

    def queryset(self, request, queryset):
        try:
            something
        except Exception as ex:
            messages.error(request, '<error string>')
        return queryset