У меня есть супер простая модель Джанго здесь:
class Notification(models.Model):
message = models.TextField()
user = models.ForeignKey(User)
timestamp = models.DateTimeField(default=datetime.datetime.now)
Используя ajax, я проверяю новые сообщения каждую минуту. Я показываю только пять самых последних уведомлений пользователю в любое время. Чего я пытаюсь избежать, так это следующего сценария.
Пользователь входит в систему и не имеет уведомлений. Когда окно пользователя открыто, он получает 10 новых сообщений. Поскольку я показываю ему только пять, ничего страшного. Проблема возникает, когда пользователь начинает удалять свои уведомления. Если он удаляет отображаемые пять, то пять более старых будут отображаться при следующем вызове ajax или обновлении.
Я бы хотел, чтобы метод сохранения моей модели удалял все, кроме 5 самых последних объектов, при сохранении нового. К сожалению, вы не можете использовать [5:] для этого. Помощь
EDIT
Я попробовал это, которое не сработало, как ожидалось (в методе сохранения модели):
notes = Notification.objects.filter(user=self.user)[:4]
Notification.objects.exclude(pk__in=notes).delete()
Я не смог найти шаблон в странном поведении, но после некоторого времени тестирования он удалял только самый последний, когда создавался новый. Я понятия не имею, почему это будет. порядок упорядочен в мета-классе модели (по убыванию отметки времени). спасибо за помощь, но мой путь, кажется, единственный, который работает последовательно.