0

我有一个扩展的 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 管理员对我不起作用。

4

1 回答 1

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
于 2013-10-03T12:46:48.507 回答