Django - реализация трекера последних изменений в HTML-файле
Я ищу решение, которое позволит мне создать раздел в моем HTML файле с последними обновлениями моего приложения. Я проверил некоторые пакеты здесь на djangopackages.org, но я не совсем уверен, какое приложение мне следует использовать.
Идея заключается в том, что если будет добавлена или обновлена какая-либо статья, то в разделе последних обновлений будет автоматически появляться информация в виде: '5 новых статей были недавно добавлены' или '2 статьи были обновлены' или '3 пользователя присоединились к нашему сайту'.
В общей сложности, у меня есть 4 модели (включая модель пользователя) в моем приложении Django, которые я хочу отслеживать и отображать обновления в моем HTML (домашняя страница, TemplateView) файле.
Что бы вы порекомендовали?
Не уверен, что я использую слишком упрощенный подход, и, возможно, это не идеально, поскольку не обязательно абстрагироваться от масштаба, но поскольку у вас всего 4 модели и вы указали, что хотите подсчитывать новые и обновленные объекты, не могли бы вы просто создать список и вернуть его шаблону?
При простых требованиях это может иметь больше смысла, чем создание зависимости от третьей стороны.
Вы можете добавить поля updated_at и created_at к вашим моделям, а затем сделать что-то вроде этого.
import datetime
week_ago = datetime.datetime.now() - datetime.timedelta(days=7)
models = [Article, User] #Add any models you need to this list
def get_updates(models):
updates = List()
for model in models:
count_new = model.objects.filter(created_at>week_ago).count()
if count_new:
list.append(f"{count_new} new {model._meta.verbose_name_plural.title()} have been created in the last week")
count_updated = model.objects.filter(updated_at>week_ago).count()
if count_updated:
list.append(f"{count_updated} {model._meta.verbose_name_plural.title()} were updated in the last week")
return updates
updates = get_updates(models) #List of the number of new and updated items for each model in the last week
Это базовый пример, но он дает идею, которую можно расширить, изменить порядок, добавить больше информации и т.д.