使用查询集通过 Admin 过滤行 - Django

发布于 2024-09-04 12:27:11 字数 173 浏览 8 评论 0原文

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

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

我发现弄清楚很复杂。


有什么想法吗?

I'm trying to find a way to filter down rows of objects within Django Admin, using a queryset.

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

I'm finding quite complicated to figure out.


Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

╰◇生如夏花灿烂 2024-09-11 12:27:11

您可以通过覆盖 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 注册的模型的结果,但您可能可以将其子类为为了保持 DRY,其他 ModelAdmin 类的起点。

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

You might be able to accomplish this by overriding the queryset() method on your modeladmin instance. See 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'))

This would only affect results for the model registered with that ModelAdmin, but you could probably subclass it as a starting point for other ModelAdmin classes in order to stay DRY.

I'm not saying this is a good idea.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文