外键上的Django admin筛选器字段

外键上的Django admin筛选器字段,django,django-admin,Django,Django Admin,在我的django项目中,我有两个通过FK相互关联的模型 School --- id name Account --- id user_id school_id status 在django管理站点中,我试图筛选帐户页面,以仅显示与查看该站点的职员用户具有相同学校id的帐户 class AccountAdmin(admin.ModelAdmin): list_display = ('user', 'status', email, 'get_school', 'created')

在我的django项目中,我有两个通过FK相互关联的模型

School
---
id
name

Account
---
id
user_id
school_id
status
在django管理站点中,我试图筛选帐户页面,以仅显示与查看该站点的职员用户具有相同学校id的帐户

class AccountAdmin(admin.ModelAdmin):
    list_display = ('user', 'status', email, 'get_school', 'created')
    search_fields = ('user__username', )
    list_filter = ('status',)

    def get_school(self, obj):
        return obj.school.name

    get_school.short_description = 'School'

    # Display all if superuser, otherwise only show same school accounts
    def queryset(self, request):
        qs = super(AccountAdmin, self).queryset(request)
        if request.user.is_superuser:
            return qs

        return qs.filter(school_id=2)

正如你所看到的,如果我在那里硬编码学校id,我已经设法让它正确过滤。但是,我正在努力获取当前staff用户的学校id。我一直困惑不已。

您将希望从用户上下文获取帐户,然后可以对其进行筛选:

account = Account.objects.get(user_id=request.user.id)

return qs.filter(school_id=account.school_id)

请记住,您还需要导入模型

例如:

from <application_name>.models import <model_name>
from.models导入