@nurzhannogerbek

Как вывести список активностей по связанным моделям данных?

Здравствуйте! Помогите пожалуйста разобраться.

Есть модель данных Project (Проект). У каждого проекта есть разделы скажем так. А если быть точнее, есть модели данных Characterictic (Характеристика) и Task (Задача), которые связаны с проектом. Пользователи могут оставлять комментарии к записям моделей Characterictic и Task.

В template вывожу список проектов и необходимо также для каждого проекта вывести список топ-10 последних активностей. Как видите есть поле revision_date у всех моделей, которая отвечает за последнее обновление записи. Так же у модели Comment есть поле created, которая показывает когда был создан комментарий.

Например:
ПРОЕКТ А
1) Комментарий был добавлен к Задаче А в 11: 45.
2) Отредактирована Характеристика B в 11:39.
3) Отредактирована Задача А в 11:00.
4) Создана Задача А в 10:45.

Как реализовать подобное?

models.py:
class Project(models.Model):
    code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(_('Name'), max_length=250)
    create_time = models.DateTimeField(auto_now_add=True)  # Дата создания записи
    revision_date = models.DateTimeField(_('Date of last update'), auto_now=True) # Дата последнего обновления записи

class Characteristic(models.Model):
    code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False)
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    description = models.TextField(_('Description'))
    comments = models.ManyToManyField("Comment")
    create_time = models.DateTimeField(auto_now_add=True)
    revision_date = models.DateTimeField(_('Date of last update'), auto_now=True)

class Task(models.Model):
    code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False)
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    description = models.TextField(_('Description'))
    comments = models.ManyToManyField("Comment")
    create_time = models.DateTimeField(auto_now_add=True)
    revision_date = models.DateTimeField(_('Date of last update'), auto_now=True)

class Comment(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    text = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
  • Вопрос задан
  • 214 просмотров
Пригласить эксперта
Ответы на вопрос 1
@immaculate
Программист-путешественник
Использовать что-то из этого: https://djangopackages.org/grids/g/activities/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы