Модель БД LMS Django/
Есть lms система,
В ней есть пользователи, у каждого пользователя есть набор ролей. В каждом наборе есть набор курикул (курсов), которые могут пересекаться с другими ролями, а в каждой курикуле набор документов для прохождения, которые также могут пересекаться с другими курикулами.
Необходимо сделать связи так, чтобы можно было выводить в django список курикул для каждого пользователя и список документов, которые ему необходимо пройти.
Также, чтобы заносить информацию о прохождении документов.
Модели которые пока удалось создать:
from django.conf import settings
from django.db import models
from django.utils import timezone
# Create your models here.
class Curicls(models.Model):
cur_name = models.CharField('Название курикулы', max_length=50)
def __str__(self):
return self.cur_name
class Meta:
verbose_name = 'Курикула'
verbose_name_plural = 'Курикулы'
class Docs(models.Model):
doc_name = models.CharField('Название документа', max_length=50)
hyp_name = models.URLField('Ссылка на документ')
cur_name = models.ManyToManyField(Curicls)
def __str__(self):
return self.doc_name
class Meta:
verbose_name = 'Документ'
verbose_name_plural = 'Документы'
class Rolesl(models.Model):
role_name = models.CharField('Название роли', max_length=50)
doc_name = models.ManyToManyField(Docs)
def __str__(self):
return self.role_name
class Meta:
verbose_name = 'Роль'
verbose_name_plural = 'Роли'
class Emp(models.Model):
emp_name = models.CharField('Название', max_length=50)
role_name = models.ManyToManyField(Rolesl)
def __str__(self):
return self.emp_name
class Meta:
verbose_name = 'Работник'
verbose_name_plural = 'Работники'
class Progress(models.Model):
LEARN = 'A'
CHECK = 'B'
RANG_DIF = [
(CHECK, "ОЗНАКОМИТЬСЯ"),
(LEARN, "ИЗУЧИТЬ")
]
emp_name = models.ForeignKey(Emp, on_delete=models.CASCADE)
doc_name = models.ForeignKey(Rolesl, on_delete=models.CASCADE)
data_click = models.DateField(default='', verbose_name='Дата последнего обновления')
progress_rang = models.CharField(max_length=1, choices=RANG_DIF, default='')
def __str__(self):
return self.emp_name
class Meta:
verbose_name = 'Прогресс'
verbose_name_plural = 'Прогресс'