- Привяжите данные к пользователю которые их создает
- Сделайте так, чтобы пользователь мог смотреть данные только своего пользователя
- Сделайте так что бы суперюзер мог видеть данные других пользователей
- Добавьте для суперюзера соответсвующий фильтр по юзеру
Чтобы в django привязать данные к юзеру необходимо сделать следующее.
Надо добавить в модели которые должны быть связаны пользователм поля внешние ключи на этого самого юзера:

как правило хочется, чтобы пользователь заполнялся во время создания модели, для этого достаточно подкрутить сериалайзер сделать его примерно таким
class StudentSerializer(serializers.ModelSerializer):
def create(self, validated_data):
# когда в api создается сериалайзер,
# то заполняется специальное поле сериалайзера которое называется context
# в него добавляется инфомрация по запросе, и доступна эта инфа
# через self.context['request'], в частности там есть информация о пользовате
if 'request' in self.context:
# заполняем validated_data который используется для создания сущности в БД
# данными из запроса
validated_data['user'] = self.context['request'].user
return super().create(validated_data)
class Meta:
model = Student
fields = ['id', 'name', "group", "picture", "user"] # тут просто юзера добавил
дальше обычно хочется ограничить доступ юзерам только к тем данным которые создавали они сами. Для этого надо в апишке переопределить метод get_queryset
class StudentsViewset(
# ...
):
queryset = Student.objects.all()
serializer_class = StudentSerializer
def get_queryset(self):
qs = super().get_queryset()
# фильтруем по текущему юзеру
qs = qs.filter(user=self.request.user)
return qs