2016-02-15 183 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中看到錯誤。