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 に答える