【问题标题】:Filtering rows withing Admin using a Queryset - Django使用 Queryset 使用 Admin 过滤行 - Django
【发布时间】:2011-02-28 16:41:36
【问题描述】:

我正在尝试找到一种方法来过滤 Django Admin 中的对象行,使用查询集。

e.g. Person.objects.filter(Q(name='John')|Q(surname='Doe'))

我发现很难弄清楚。


有什么想法吗?

【问题讨论】:

  • 你的意思是你想做一些类似搜索的事情,还是你想在更改列表中通常只显示选定的对象?
  • @lazerscience 是的,类似于搜索,但使用上述查询集。我的意图是搜索与姓名或姓氏匹配的所有人员行。
  • 不明白...你能告诉我更多关于这个问题的信息吗?

标签: python django django-models django-admin django-queryset


【解决方案1】:

您可以通过覆盖模型管理实例上的 queryset() 方法来完成此操作。见http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/options.py?rev=15347#L196

# untested code
class MyModelAdmin(admin.ModelAdmin):
    def queryset(self, request):
        qs = super(MyModelAdmin, self).queryset(request)
        return qs.filter(Q(name='John') | Q(surname='Doe'))

这只会影响向该 ModelAdmin 注册的模型的结果,但您可以将其子类化为其他 ModelAdmin 类的起点,以保持 DRY。

我并不是说这是个好主意。

【讨论】:

    猜你喜欢
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 2012-12-19
    • 1970-01-01
    • 2018-01-05
    • 2013-09-08
    • 1970-01-01
    相关资源
    最近更新 更多