-
Notifications
You must be signed in to change notification settings - Fork 2
Dictionary
Represents a platform user, either a learner or a content curator (teacher, mentor). This model handles user credentials, preferences, and skills. It's essential for tracking each user's progress, skills, and learning preferences, while enabling access to personalized learning routes and resources.
- Preference (ForeignKey): Represents the user's content and learning preferences.
- SkillLevel (Many-to-Many): Current skills of the user.
- SkillLevel (Many-to-Many): Target skills the user wants to learn.
- LearningRoute (Many-to-Many): Learning routes the user is following.
- Review (One-to-Many): Reviews written by the user.
This model is essential for the platform to manage personalized experiences, including the ability to match users with learning routes and resources based on their current skills and desired learning outcomes.
- id: AutoField (Primary key)
- name: CharField (User's name)
- password: CharField (User's password)
- email: EmailField (User's email address)
- image: ImageField (User's profile image)
-
preference: ForeignKey to
Preference
(User's content preferences) - is_active: BooleanField (Whether the account is active)
- is_staff: BooleanField (Whether the user is a staff member)
- is_superuser: BooleanField (Superuser status for permissions)
-
current_skills: Many-to-Many with
SkillLevel
(User's current skills) -
target_skills: Many-to-Many with
SkillLevel
(Skills the user aims to acquire) -
learning_routes: Many-to-Many with
LearningRoute
(Learning routes associated with the user) -
last_login: DateTimeField (Inherits from
AbstractBaseUser
) -
password: CharField (Inherits from
AbstractBaseUser
)
Represents user feedback on learning resources. Each review contains a rating and a comment. The platform uses reviews to assess the quality and relevance of resources.
- User (ForeignKey): The user who wrote the review.
- LearningResource (Many-to-One): The resource being reviewed.
Reviews provide a way for users to evaluate the quality and usefulness of learning resources, helping future users make informed decisions and ensuring content quality.
- id: AutoField (Primary key)
- rate: IntegerField (Rating for the resource)
- created_at: DateTimeField (Timestamp when the review was created)
- comment: TextField (Text of the user's review)
-
user: ForeignKey to
User
(User who wrote the review)
Represents an external learning resource, such as a tutorial, video, or article. The model holds the metadata for the resource, including its content type, link, and duration.
- SkillLevel (Many-to-Many): Represents the skills learned from the resource.
- SkillLevel (Many-to-Many): Skills required to understand the resource.
- Review (Many-to-Many): User reviews related to the resource.
- LearningRouteResource (Many-to-One): Learning route resources that use this resource.
The platform aggregates learning materials, but does not host them directly. The LearningResource
model is critical to linking users with external content and providing detailed metadata for personalized learning.
- id: AutoField (Primary key)
- name: CharField (Name of the resource)
- media_type: CharField (The type of media, e.g., video, text)
- content_type: CharField (Type of content, e.g., tutorial, exercise)
- link: CharField (Link to the external resource)
- details: TextField (Detailed description of the resource)
- duration: IntegerField (Estimated time required for the resource)
- language: CharField (Language of the resource)
- original_platform: CharField (Platform where the resource originates)
- original_author: CharField (Creator or author of the resource)
- general_level: IntegerField (Overall difficulty level)
-
required_skills: Many-to-Many with
SkillLevel
(Skills needed to understand the resource) -
learning_skills: Many-to-Many with
SkillLevel
(Skills the user will learn from this resource) -
reviews: Many-to-Many with
Review
(User reviews for the resource)
Represents a personalized learning path that consists of multiple resources. The model tracks the user's progress and time spent on each route.
- SkillLevel (ForeignKey): The skill level targeted by the learning route.
- LearningRouteResource (Many-to-Many): Resources included in the learning route.
- User (Many-to-One): Users who follow this learning route.
The LearningRoute
model organizes various learning resources into structured paths, guiding users in acquiring new skills in a logical sequence based on their current level and goals.
- id: AutoField (Primary key)
-
skill_level: ForeignKey to
SkillLevel
(The skill level of the learning path) - duration: IntegerField (Total duration of the learning path)
- actual_resource_index: IntegerField (Position of the resource being used)
- completed: BooleanField (Whether the learning path is completed)
- time_spent: IntegerField (Total time spent on the learning path)
-
learning_route_resources: Many-to-Many with
LearningRouteResource
(Resources in the learning path)
Represents an association between a LearningResource
and a LearningRoute
. It tracks the specific order, progress, and time spent on a resource within a learning route.
- LearningResource (ForeignKey): The learning resource associated with this entry.
- LearningRoute (Many-to-One): The learning route this resource belongs to.
This model allows the platform to track the usage of each resource within a learning route, which is essential for monitoring user progress and adjusting the learning path dynamically.
- id: AutoField (Primary key)
- index: IntegerField (Order of the resource in the learning path)
- level: IntegerField (Difficulty level of the resource)
-
learning_resource: ForeignKey to
LearningResource
(Resource associated with this entry) - completed: BooleanField (Whether the resource has been completed)
- time_spent: IntegerField (Time spent on this resource)
Represents the learning and content preferences of a user, such as preferred media types and the amount of time they can dedicate to learning.
- User (ForeignKey): The user whose preferences are being tracked.
By storing user preferences, the platform can tailor the learning paths to match the user's preferred media and learning style, ensuring a more personalized and effective experience.
- id: AutoField (Primary key)
- media_type: CharField (Preferred media type, e.g., videos, articles)
- content_type: CharField (Preferred content type, e.g., tutorials, exercises)
- learning_type: CharField (Preferred learning type, e.g., visual, hands-on)
- time_per_week: IntegerField (Time user is willing to spend per week)
- time_per_session: IntegerField (Time user is willing to spend per session)
Represents a specific skill, such as a programming language or technology. This model helps define what users know, want to learn, and what resources teach or require these skills.
- SkillLevel (One-to-Many): Levels of proficiency in the skill.
The platform revolves around skill acquisition. The Skill
model is central to tracking user abilities and matching them with appropriate resources and learning paths.
- id: AutoField (Primary key)
- name: CharField (Name of the skill, e.g., Python, React)
- skill_type: CharField (Category of the skill, e.g., technical, soft skill)
- image: ImageField (Optional image representing the skill)
Represents a specific proficiency level for a given skill. This model helps differentiate between different stages of skill acquisition and progression.
- Skill (ForeignKey): The skill this level belongs to.
- User (Many-to-Many): Users who have this skill level.
- LearningResource (Many-to-Many): Resources teaching this skill level.
By breaking skills into levels, the platform can guide users through a gradual learning process, ensuring that resources and learning paths are appropriately matched to their current proficiency.
- id: AutoField (Primary key)
-
skill: ForeignKey to
Skill
(The specific skill this level belongs to) - level: IntegerField (The level of proficiency in the skill)