DJANGO запрос к связанным таблицам

У меня есть связанные модели:

# Create your models here.
from django.conf import settings
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User

# Create your models here.


class Docs(models.Model):
    doc_id = models.CharField ('ID документа', max_length=200,null=True,  unique=True)
    doc_title = models.CharField ('Название документа', max_length=200,null=True)
    hyp_name = models.URLField('Ссылка на документ')
    update_date = models.DateField (auto_now=True,verbose_name='Дата обновления документа')
    date_per = models.IntegerField('Срок действия прохождения')

    def __str__(self):
        return self.doc_id

    class Meta:
        verbose_name = 'Документ'
        verbose_name_plural = 'Документы'


class Curicls(models.Model):
    curic_id = models.CharField ('ID курикулы', max_length=100, null=True,unique=True)
    cur_title = models.CharField ('Название курикулы', max_length=100, null=True)
    doc_id = models.ManyToManyField(Docs)


    def __str__(self):
        return self.curic_id

    class Meta:
        verbose_name = 'Курикула'
        verbose_name_plural = 'Курикулы'


class Rolesl(models.Model):
    LEARN = 'A'
    CHECK = 'B'
    RANG_DIF = [
        (CHECK, "ОЗНАКОМИТЬСЯ"),
        (LEARN, "ИЗУЧИТЬ")
    ]

    role_name = models.CharField('Название роли', max_length=100, unique=True)
    cur_id = models.ManyToManyField (Curicls, max_length=200, verbose_name='ID курикулы')
    rang = models.CharField(max_length=1, choices=RANG_DIF, default='', verbose_name='Ранг')

    def __str__(self):
        return self.role_name

    class Meta:
        verbose_name = 'Роль'
        verbose_name_plural = 'Роли'



#>>> cur = [[print(i1.cur_id.all()) for i1 in i.roles_name.all()] for i in testm]
#cur = [[[print(i2.doc_id.all()) for i2 in i1.cur_id.all()] for i1 in i.roles_name.all()] for i in testm]
#cur = [[[print(i2.doc_id.all().distinct()) for i2 in i1.cur_id.all()] for i1 in i.roles_name.all()] for i in testm]



class Emp(models.Model):


    emp_name = models.OneToOneField(User, on_delete= models.CASCADE)
    per_no = models.IntegerField('Pers.No.')
    last_name = models.CharField('Last Name', max_length=50)
    first_name = models.CharField('First Name', max_length=50)
    emp_mail = models.EmailField('Email', max_length=100)
    roles_name = models.ManyToManyField(Rolesl)

    def __str__(self):
        return str(self.emp_name)

    class Meta:
        verbose_name = 'Работник'
        verbose_name_plural = 'Работники'


class Progress(models.Model):

    emp_name = models.ForeignKey(Emp, on_delete=models.CASCADE)
    doc_title = models.ForeignKey(Docs, on_delete=models.CASCADE)
    date_create = models.DateField(auto_now_add=True, verbose_name='Дата первого прохождения')
    date_update = models.DateField(verbose_name='Дата последнего прохождения')

    def __str__(self):
        key =  str(self.pk)
        return f'ID = {self.pk} / Employee = {self.emp_name} / Doc {self.doc_title}'

    class Meta:
        verbose_name = 'Прогресс'
        verbose_name_plural = 'Прогресс'

Я хочу вывести все документы для конкретного пользователя, но чтобы их не было в таблике Progress.

Пока что сделал так:

emproles = Emp.objects.prefetch_related("roles_name__cur_id__doc_id").filter(emp_name = self.request.user)

Но как сравнить это с моделью Progress?

Также в шаблон должна быть выведена вся информация из связанных таблиц ( название роли -> курикулы -> документы для каждой курикулы.

введите сюда описание изображения

Вернуться на верх