Я создал пользовательские уровни пользователей для своего приложения Django, уровни пользователей следующие:

  • Учетчик
  • Районный инспектор
  • Верификация

Каждый уровень пользователя может отправлять содержимое следующему/предыдущему (Enumerator to Area Supervisor, Area supervisor to Enumerator & Verification, and Verification to Area supervisor only).

Уровни пользователей также ограничены по городам (начальник участка может видеть контент, представленный только счетчиками в городе "X", и то же самое относится ко всем уровням пользователей).

Мои проблемы с моим кодом, как показано на скриншоте:

  • Enumerator1 создает Content1
  • Enumerator2 создает Content2

Enumerator1 может видеть пустую строку (которая является содержимым, созданным Enumerator2), и то же самое относится к Enumerator2.

Также, перечислитель, региональный супервайзер или верификация могут видеть эти пустые строки всего контента, когда контент не находится в их разрешении (поскольку, когда, например: перечислитель отправляет контент региональному супервайзеру, у перечислителя не будет доступа к этому контенту, пока он не будет отправлен обратно)

.

Скриншот1: Enumerator1 создал контент. введите описание изображения здесь

Скриншот2: Как Enumerator2 видит контент, созданный Enumerator1 введите описание изображения здесь

Скриншот3: Что происходит, когда Enumerator2 пытается получить доступ к пустой строке введите описание изображения здесь

Скриншот4: Что происходит, когда Enumerator2 пытается удалить пустую строку введите описание изображения здесь

Скриншот5: Как контент отображается для Area Supervisor, Verification (или любого другого уровня пользователя, кроме создателя) введите описание изображения здесь

Полный исходный код можно найти здесь: https://bitbucket.org/azoughbi/cfs/src

Как я могу решить эту проблему, не отображая пустые строки, когда у пользователей нет доступа к ним?

Ahmad Alzoughbi

Ответов: 1

Ответы (1)

Определите метод get_queryset() в вашем ModelAdmin:

class contentAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        qs = super(contentAdmin, self).get_queryset()
        # Refine your query here, filtering out the unwanted records.
        return qs

2022 WebDevInsider