Есть ли способ ограничить просмотр пользователями только дочерних элементов родительского элемента, к которому они принадлежат, в Django Rest?

Я создал приложение Django REST для клиента, который позволяет пользователям присоединяться к сообществам. Модель сообщества имеет 20+ моделей, которые так или иначе связаны с ней (такие вещи, как события, даты событий, встречи, сообщения и т.д.). Мне нужен способ ограничить пользователей, чтобы они могли выполнять CRUD-операции только над элементами, принадлежащими сообществам, в которых они состоят. Например, если пользователь "John Smith" является членом сообщества "Animal Rescue Volunteers", он должен иметь возможность читать сообщения только этого сообщества и не должен иметь возможности создавать/редактировать сообщения в других сообществах.

Я видел, как люди использовали метод get_queryset набора ViewSet для ограничения процессов RUD следующим образом:

class MessageView(viewsets.ModelViewSet):
    queryset = Message.objects.all()
    serializer_class = MessageSerializer

    def get_queryset(self):
       return self.queryset.filter(message__community__in=self.request.user.communities)

Однако это не решает проблему с Creates и должно быть применено к каждому ViewSet, чтобы работать. Есть ли лучший способ сделать это?

Вернуться на верх