[list_display有条件地在表中显示行

问题描述 投票:0回答:3

我有两个桌子

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)')
python django conditional-statements admin customization
3个回答
0
投票
您可以写list_display是...

list_display = ('username', 'email', 'filtered_organisation')

并如下编写filtered_organisation的方法...

def filtered_organisation(self, obj): return Organizations.objects.filter(id=organization_id)

更多参考click here

0
投票
重写ModelAdmin类的get_list_display--(doc)方法

get_list_display


0
投票
您可以覆盖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']方法:

get_queryset(request)

© www.soinside.com 2019 - 2024. All rights reserved.