Я пытаюсь выяснить, как справляться с разрешениями пользовательского списка.Пользовательские разрешения списка в Django REST Framework
Я объясняю лучше всего примерами, поэтому я составил этот сценарий, чтобы объяснить свою проблему.
Скажем, у меня есть User
модель, а User
имеет ForeignKey
к Bank
, Bank
может быть открыт (или нет).
Я установил разрешение, где запросы на чтение для Bank
может быть разрешено только в том случае Bank
открыт, Кроме того, User
объект может быть создан кем-либо (Bank
, скажем, может быть создана только пользователем администратора). Так что мои права на Bank
что-то вроде этого:
def has_object_permission(self, request, view, obj):
if request.method in permissions.SAFE_METHODS
return obj.opened
return True
Если я установил свой взгляд на queryset = Bank.objects.all()
Я хожу в /banks
, я все еще могу видеть банки, которые закрыты (это не то, что я хотел). Если я перейду к /banks/<pk>
, я получу сообщение, требующее аутентификации (что хорошо).
Итак, если я изложу свою точку зрения на queryset = Bank.objects.filter(opened=True)
Я хожу в /banks
, и вуаля, только банки, которые открываются в списке.
Вот хитрая часть, Если я иду вперед и создать пользователя, а с Bank
является ForeignKey
, я до сих пор можно увидеть список всех банков, доступных на выбор независимо открыт или нет, в API-браузер ,
Как исправить это, чтобы отображались только открытые банки? Надеюсь, я достаточно ясен с моим примером. Благодаря!
Спасибо за ответ, я пытался из вашего решения, и это работает для проблемы я описал выше. –