代码之家  ›  专栏  ›  技术社区  ›  Mat

Django管理GUI可以过滤文本字段是否为空吗?

  •  4
  • Mat  · 技术社区  · 17 年前

    我有一个包含文本字段的Django模型。在管理GUI中,我希望能够仅过滤此字段中包含文本的记录。有可能吗?

    这样的代码将过滤文本字段的内容,但会在“全部”和过滤器中的每个不同条目上显示过滤器。我想过滤“全部”或“包含某些内容”。

    class MyModel(models.Model):
        # ...
        textfield = models.CharField(max_length=100)
        # ...
    
    class MyModelAdmin(admin.ModelAdmin):
        list_display = ('...', 'textfield', '...')
        list_filter = ('...', 'textfield', '...')
    
    3 回复  |  直到 17 年前
        1
  •  6
  •   gerdemb    17 年前

    是的,但没有记录。看 django\contrib\admin\filterspecs.py 了解默认filterspec是如何创建的,以及如何创建自己的filterspec。此功能计划在1.1版本中使用,如果您现在想在最新的HEAD修订版上尝试此功能,则已经有一个补丁: http://code.djangoproject.com/ticket/5833

    /admin/app/model/?field1__lte=5&field2__gte=10 不幸的是 ?field__isnull=True 不会起作用,但你可以很容易地进行实验,看看是否能找到一个适用于你的过滤器。

        2
  •  0
  •   fastmultiplication    14 年前

    是的,从django 1.4开始,您可以扩展SimpleListFilter并轻松做到这一点。请参阅:

    请参阅: https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter

        3
  •  -2
  •   S.Lott    17 年前

    不,见 http://docs.djangoproject.com/en/dev/ref/contrib/admin/#list-filter

    更改列表的右侧边栏 管理员页面。这应该是一个 BooleanField、CharField、DateField, DateTimeField、IntegerField或

    但是。..

    1. 请确保文本字段为空。

      类MyModel(models.Model):

    2. 添加is_blank方法以帮助处理。它不会过滤,但很有帮助。

      def是空的(self):