【问题标题】:django suit admin filter - simplest way to override lookupsdjango suit admin filter - 覆盖查找的最简单方法
【发布时间】:2016-04-10 21:16:37
【问题描述】:

当使用 Django suit 的管理过滤器时,当我选择一个值时,字段名称会消失。 例如看: http://djangosuit.com/admin/examples/kitchensink/

如图所示,当有人选择“Choices”字段时,他们只能看到被选中的值(Tall)。

这有时会很糟糕;例如,对于“有货”的布尔字段,您只会看到“是”,但我更愿意看到“有货:是”。 我知道我可以制作自定义过滤器并指定查找元组,但我想知道是否有更清洁、更可持续的方式来做到这一点。

为了说明有多少冗余代码:

class InventoryFilter(admin.SimpleListFilter):
    title = 'is_in_stock'
    parameter_name = 'is_in_stock'
    def lookups(self, request, model_admin):
        return (('Yes', 'in stock:Yes'),('No', 'in stock:No'))

    def queryset(self, request, queryset):
        return queryset.filter(is_in_stock=True)


@admin.register(Inventory)
class InventoryAdmin(admin.ModelAdmin):
    list_display = ('is_in_stock',)
    list_filter = ('is_in_stock',)

我必须对每个变量都这样做! 我正在寻找一种更智能的方法。谢谢

【问题讨论】:

  • 我没有看到自定义过滤器的问题。是不是代码太多了?

标签: django filter admin


【解决方案1】:

另一种解决方案,扩展模板并在下拉列表之前显示字段名称(如果该字段有值)。

【讨论】:

  • 不知何故我需要将查询键传递给模板。唯一的方法是在构造函数中使用关键字参数,但我不知道如何将查询键转换为查询。你看,我不想为我的管理页面中的每个过滤器都这样做,因为它们有数百个。
  • 不是每个过滤器,我假设模板都有一个 forloop ;)
【解决方案2】:

这对我有用,Django-Suit V2

list_filter = ('Model_ForeignKey', )

【讨论】:

    猜你喜欢
    • 2020-05-03
    • 2016-07-26
    • 2020-11-22
    • 2011-05-10
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 2017-05-26
    • 2020-09-13
    相关资源
    最近更新 更多