2014-03-26 182 views
0

在我的django项目中,我有几个通过FK相互关联的模型。Django管理外键过滤字段

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) 

正如你可以看到我设法让它过滤正确,如果我硬编码school_id在那里。但是,我正在努力获得当前的职员用户学校ID。我把自己弄糊涂了。

回答

1

你会想从用户上下文,然后你就可以过滤对拿到帐号:

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

return qs.filter(school_id=account.school_id) 
+0

该诀窍。非常感谢Bayard! –

1

记住,你需要导入模型了。

例如:

from <application_name>.models import <model_name>