在我的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)
正如您所看到的,如果我在那里硬编码school_id,我已设法让它正确过滤。但是,我努力让目前的员工用户上学。我已经把自己搞糊涂了。
答案 0 :(得分:1)
您需要从用户上下文中获取帐户,然后您可以过滤该帐户:
account = Account.objects.get(user_id=request.user.id)
return qs.filter(school_id=account.school_id)
答案 1 :(得分:1)
请记住,您也需要导入模型。
例如:
from <application_name>.models import <model_name>