2013-10-03 49 views
0

我有一個擴展django.auth.User看起來像這樣:僅與滿足條件的用戶填充表?

class ExtendedUser(models.Model): 
    user = models.OneToOneField(User) 
    is_admin = models.BooleanField()  

此表包含常規和管理員用戶。 如果用戶有is_adminTrue,他將被重定向到管理頁面。在管理頁面上,他應該看到一個包含所有非管理員用戶的表格。換句話說,只有在查詢集中出現的用戶:

p = ExtendedUser.objects.get_query_set() 
p.filter(is_admin = False) 

應顯示在表中。

我使用django-tables2來生成管理頁面中的表格,但是它們默認顯示所有用戶。

class ExtendedUserTable(tables.Table): 
    class Meta: 
     model = ExtendedUser 

什麼是推薦的方式呈現非管理員用戶只?

注意:由於其他原因,默認的Django管理員不適用於我。

+0

'ExtendedUser.objects.get(is_admin = False)'因爲它沒有返回QuerySet而錯誤。更改爲返回QuerySet。 – TheMeaningfulEngineer

回答

0

解決方案是生成一個過濾的QuerySet並將其作爲內容傳遞到表中。

這裏是view.py的樣子:

from django_tables2 import RequestConfig 
from student_upload.models import ExtendedUser 
from admin.tables import ExtendedUserTable 

def index(request): 
    p = ExtendedUser.objects.get_query_set() 
    table = ExtendedUserTable(p.filter(is_admin = False)) 
    RequestConfig(request).configure(table) 
    return render(request, 'admin/index.html', {'table': table}) 

tables.py不變。

class ExtendedUserTable(tables.Table): 
    class Meta: 
     model = ExtendedUser