2016-02-15 139 views
3

我有一个应用程序,就像一个store其中每个商店有很多products和产品有很多ordersproduct_id,user_id)。在产品页面上,我显示了拥有该产品的用户数量,并且我想放置一个链接,将该链接重定向到这些用户的列表。Django管理员过滤用户

我创建链接如下:

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的用户列表中它仍然不认我。我可以在用户页面上看到过滤器,但是当我点击它时,它只是出错。我怎样才能做到这一点?

回答

2

我的猜测是你没有注册该过滤器的UserAdmin模型。 要将过滤器添加到管理控制台中的Users部分,你可以将它添加到在admin.py文件您的应用程序的现有UserAdmin型号:

from django.contrib.auth.admin import UserAdmin 

然后添加过滤器你想

UserAdmin.list_filter += ('orders__product_id',) 

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