我有两个桌子
Employee
-----
username
organisation_id
email
Organisation
------------
organisation_id
company_name
User_A->organisation_1
User_B->organisation_1
User_C->organisation_2
User_D->organisation_2
[user_A登录时,他应该只看到User_A和User_B此代码应如下所示,逻辑是首先,我们需要找到当前的用户组织并有条件地在管理页面中显示结果Django管理员代码
admin.site.register(Employee, CustomUserAdmin)
admin.site.register(Organization)
class CustomUserAdmin(UserAdmin):
def filter_view(request):
current_user = request.user
organization_id =employees.objects.get(id=current_user.id).organization_id
List_display = ('username', 'email','Organizations.objects.filter(id=organization_id)')
list_display
是...list_display = ('username', 'email', 'filtered_organisation')
并如下编写filtered_organisation的方法...
def filtered_organisation(self, obj): return Organizations.objects.filter(id=organization_id)
更多参考click here
get_list_display
--(doc)方法get_list_display
class MyAdmin(admin.ModelAdmin):
def get_list_display(self, request):
if request.user.id == 'some_id':
return ['field_1', 'field_2']
else:
return ['field_1', 'field_2', 'field_3', 'field_4', 'field_5']
方法: