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