Files
lms-backend/apps/courses/models.py
T
Flook fe67d491e2
Build & Push Docker Image (Backend) / build (push) Successful in 54s
feat: implement LMS core (CMS, Courses, Enrollment, Progress, Auth) (Admin + API)
2026-05-03 09:36:47 +07:00

73 lines
2.2 KiB
Python

from django.db import models
from core import settings
User = settings.AUTH_USER_MODEL
class Enrollment(models.Model):
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='enrollments',
)
course = models.ForeignKey(
"Course",
on_delete=models.CASCADE,
related_name='enrollments',
)
enrolled_at = models.DateTimeField(auto_now_add=True)
class Meta:
unique_together = (('user', 'course'),)
verbose_name = "การลงทะเบียนเรียน"
verbose_name_plural = "การลงทะเบียนเรียน"
def __str__(self):
return f"{self.user} enrolled in {self.course}"
class LessonProgress(models.Model):
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='lesson_progress',
)
lesson = models.ForeignKey(
"Lesson",
on_delete=models.CASCADE,
related_name='progress_records',
)
completed = models.BooleanField(default=False)
complete_at = models.DateTimeField(auto_now_add=True)
class Meta:
unique_together = (('user', 'lesson'),)
verbose_name = "ความคืบหน้าบทเรียน"
verbose_name_plural = "ความคืบหน้าบทเรียน"
class Course(models.Model):
title = models.CharField(max_length=200)
description = models.TextField()
published = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name = "หลักสูตร"
verbose_name_plural = "หลักสูตร"
def __str__(self):
return self.title
class Lesson(models.Model):
course = models.ForeignKey(
Course,
related_name='lessons',
on_delete=models.CASCADE
)
title = models.CharField(max_length=200)
content = models.TextField()
order = models.PositiveIntegerField(default=0)
class Meta:
verbose_name = "บทเรียน"
verbose_name_plural = "บทเรียน"
def __str__(self):
return f"{self.course.title} - {self.title}"