Прими мой совет с крошкой соли, я довольно плохо знаком с django и python, и я не проверял это, но я хотел бы реализовать это следующим образом:
Создать новыймодель:
class LastViewed(models.Model):
ip = models.IPAddressField()
last_view = models.DateField()
question = models.ForeignKey(Question)
class Meta:
unique_together = ('ip', 'question',)
Затем, прежде чем count_views увеличивает значение, он должен запросить таблицу LastViewed, чтобы проверить время последнего доступа:
question = Question.objects.get(pk=question_id)
request_ip = request.META['REMOTE_ADDR']
last = LastViewed.objects.get(ip=request_ip)
if request.is_ajax() and (last.last_view - datetime.datetime.now() < datetime.timedelta(minutes=5)):
question.views_count = question.views_count + 1
question.save()
else:
# etc
Надеюсь, это поможет вам составить общее представление окак это сделать, я пропустил код, чтобы фактически добавлять / обновлять новые записи в таблице LastViewed.