我有一个扩展的django.auth.User看起来像这样:
class ExtendedUser(models.Model):
user = models.OneToOneField(User)
is_admin = models.BooleanField()
此表包含常规用户和管理员用户。
如果用户is_admin
为True
,则会将其重定向到管理页面。在管理页面上,他应该看到一个包含所有非管理员用户的表。换句话说,只有出现在QuerySet中的用户:
p = ExtendedUser.objects.get_query_set()
p.filter(is_admin = False)
应显示在表格中。
我正在使用django-tables2
在管理页面中生成表格,但默认情况下会显示所有用户。
class ExtendedUserTable(tables.Table):
class Meta:
model = ExtendedUser
仅向非管理员用户呈现的推荐方法是什么?
注意:由于其他原因,默认的Django管理员不适用于我。
答案 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