仅对满足条件的用户填充表?

时间:2013-10-03 12:12:58

标签: django django-tables2

我有一个扩展的django.auth.User看起来像这样:

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

此表包含常规用户和管理员用户。 如果用户is_adminTrue,则会将其重定向到管理页面。在管理页面上,他应该看到一个包含所有非管理员用户的表。换句话说,只有出现在QuerySet中的用户:

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

应显示在表格中。

我正在使用django-tables2在管理页面中生成表格,但默认情况下会显示所有用户。

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

仅向非管理员用户呈现的推荐方法是什么?

注意:由于其他原因,默认的Django管理员不适用于我。

1 个答案:

答案 0 :(得分: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