I’m a student from Universidade Federal do Ceará (Brazil), and my course completion work is about refactor and optimization a system that was made with Django.
As for refactoring, I will try to use the principles that Martin Fowler left in his book - basic things about programming and good practices, regardless of the programming language.
When analysing and refactoring the system design, I thought about taking advantage of SOLID principles to improve the organization of entities and models. However, researching these principles in Django, I saw that concepts such as interfaces, inversion and dependency injection are not implemented and provided directly by Django and that it would be a risk to work with libraries that do this, as the internal behaviour of the models and entities could be affected and harmed (Django with Abstract Base Classes & Composition).
My question is, does Django somehow use concepts similar to interfaces, inversion and dependency injection? Even if this is done at lower layers of the framework. Just as an explanation for the work: how each of the SOLID concepts can be used in this system, or in this case, how they cannot be used, if the concept is not present in Django.