Django管理员过滤用户

时间:2016-02-15 13:32:05

标签: django django-admin

我有一个类似于store的应用,其中每个商店都有很多products,而且产品有很多ordersproduct_iduser_id)。在产品页面上,我显示了拥有该产品的用户数量,并且我希望放置一个链接,将我重定向到这些用户的列表。

我按如下方式创建链接:

def users_link( self, product ):
    url = urlresolvers.reverse( 'admin:auth_user_changelist' )
    return u'<a href="%s?orders__product_id=%d">%s</a>' %( url, product.pk, product.users_count )

但是我收到以下错误:

DisallowedModelAdminLookup at /admin/auth/user/
Filtering by orders__product_id__exact not allowed

即使我为用户添加orders__product_id允许的list_filter列表,它仍然会拒绝我。我可以在用户页面上看到过滤器,但是当我点击它时它就会出错。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

我的猜测是您没有使用UserAdmin模型注册此过滤器。 要在管理面板的Users部分添加过滤器,您可以将其添加到应用的 admin.py 文件中的现有UserAdmin模型中:

from django.contrib.auth.admin import UserAdmin

然后添加您想要的过滤器

UserAdmin.list_filter += ('orders__product_id',)

您现在应该在管理面板的User部分右侧边栏中看到一个新过滤器。如果过滤器不正确,您应该在shell中看到错误。