Чтобы в 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

Задание

  • Привяжите данные к пользователю которые их создает
  • Сделайте так, чтобы пользователь мог смотреть данные только своего пользователя
  • Сделайте так что бы суперюзер мог видеть данные других пользователей
  • Добавьте для суперюзера соответсвующий фильтр по юзеру