使用Queryset使用Admin过滤行 - Django

时间:2010-06-07 12:48:17

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

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

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

我发现很难搞清楚。


有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以通过覆盖modeladmin实例上的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。

我不是说这是个好主意。