list_display строк в таблице условно django - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть две таблицы

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. Этот код должен быть таким, как показано ниже, logi c - сначала нам нужно найти текущую организацию пользователя и условно отобразить результаты на странице администратора 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)')

Ответы [ 3 ]

1 голос
/ 24 февраля 2020

Вы можете переопределить get_queryset(request) метод:

Я предполагаю, что у вас есть одно отношение между сотрудником и пользователем

class Employee(models.Model):
   user = models.OneToOneField(User)

Затем переопределите класс ModelAdmin следующим образом:

class CustomUserAdmin(UserAdmin):
     def get_queryset(self, request):
        return super().get_queryset(request).filter(organisation_id=request.user.employee.organisation_id)
1 голос
/ 24 февраля 2020

Вы можете написать list_display is ...

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

И написать метод отфильтрованной организации, как показано ниже ...

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

Для получения дополнительной информации нажмите здесь

0 голосов
/ 09 марта 2020

Я отвечаю на этот вопрос, чтобы помочь другим, я изменил свой код таким образом для нескольких типов пользователей, этот код поможет вам в такой ситуации, так что только пользователи, связанные с отделом, могут видеть другого пользователя, но суперпользователь может контролировать каждого. Спасибо @ruddra и @MK Patel за ваши ценные усилия.

>     class RestrictedFormAdmin(admin.ModelAdmin):
>         class Meta:
>             model = Employee
>         def get_queryset(self, request):
>             if request.user.is_superuser:
>                 return super().get_queryset(request)
>             return super().get_queryset(request).filter(organization_id=request.user.employee.organization_id)
> 
>     admin.site.register(Employee,RestrictedFormAdmin)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...