Based on the data model, I created a database for storing student, vacancy, and application data. The system was built as a Django application, with tables defined in models.py using the required attributes and constraints.
The following tables were created:
Django Field constructors were used to define variable types and apply constraints.
EmailField — a string field (CharField) with built-in email validation through EmailValidator.
ImageField — a field for storing images. The path is defined through upload_to, with separate folders created during migration to keep files organised.
The Job table was created using the corresponding Field types.
The Apply table stores student applications for vacancies and can be managed by an administrator.
The Profile table stores student and academic-performance data, while Group stores information about their institute and study group.
I added a ModelAdmin class to display and edit these tables in the Django admin interface.
After registering the models in admin.py, the Django admin panel provides an interface for viewing, adding, deleting, and editing database records. Access is limited to authorised users, while the superuser has full access through admin/.
To make database records easier to manage in admin.py, I configured: