Модель БД 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 = 'Прогресс'
Вернуться на верх