@Shivam Mahajan
Your error is because in your Courses class you are creating a new model 'academy.courses' using the model 'product.template' as a prototype. You are not extending the model 'product.template' with the field teacher_id and in your class Teachers you have the field course_ids as a one2many relation with the model 'product.template', that require a field named 'teacher_id' as a many2one to 'academy.teachers' in 'product.template'.
To fix it you have two options, depending of what you need to do
1- You can change this:
course_ids = fields.One2many('product.template','teacher_id', string="Courses")
to this:
course_ids = fields.One2many('academy.courses','teacher_id', string="Courses")
2- Or you can change this:
class Courses(models.Model):
_name = 'academy.courses'
_inherit = 'product.template'
To this:
class Courses(models.Model):
_inherit = 'product.template'
Only use one of the two options. The #1 will keep the prototype inheritance from the model 'product.template' but fix the relation and the #2 will extends the model 'product.template' with the field teacher_id
Your choice
These tips will help you: https://goo.gl/8HgnCF