Я решил использовать Django-Simple-History для построения истории моих моделей. В свою очередь, используя это для создания приборной панели. Однако я столкнулся с небольшой загвоздкой. Я пытаюсь вывести [Пользователь] [добавлен, изменен, удален] [объект] в / в [время], но я не могу понять это хоть убей.
Пока что я могу отобразить историческая запись в шаблоне, но у меня нет доступа ни к чему другому, я что-то упускаю?
Я надеялся, что кто-то со знанием простой истории может помочь, так как я не мог связаться с автором.
Здесь - это фрагменты кода, которые у меня есть на данный момент.
Models.py
from simple_history.models import HistoricalRecords
class Project(django.db.models.Model):
...
history = HistoricalRecords()
Views.py
@login_required
def addTMProject(request):
user = request.user
if request.method == 'POST':
form = TimeMaterialsForm(request.POST)
if form.is_valid():
project = form.save(commit=False)
project.created_by = request.user
today = datetime.date.today()
project.pre_quote = "%s-" % (str(today.year)[2:4])
project.quote = Project.objects.latest().quote+1
project.save()
project.history.all()
...
И я также передал его на свою панель инструментов / views.py, чтобы получить к нему доступ.
@login_required
def view_dash(request):
today = datetime.date.today()
user = request.user
proj_perm = user.has_perm('project.add_project')
project = Project.objects.all().order_by('-proj_name')
query = Project.objects.all().order_by('-id')[:5]
que_quotes = Project.objects.filter(status__value__exact = 'Quote')
expired = FollowUp.objects.filter(next_followup__lte=today).order_by('next_followup').filter(archived=False)
log = LogEntry.objects.select_related().all().order_by("-id")
hist = Project.history.all()
return render_to_response('dashboard/home.html', {'user': user, 'project': project, 'query':query, 'que_quotes':que_quotes, 'expired':expired,
'proj_perm':proj_perm, 'log': log, 'hist':hist,}, context_instance=RequestContext(request))
И, наконец, фрагмент из моего шаблона. Как и сейчас, {{h}} показывает «Тестирование простых записей по состоянию на 2011-04-29 10:43: Насколько я понимаю, O (N) означает, что скорость алгоритма растет линейно в зависимости от количества элементов в списке.
Однако, если я не смотрю на вещи неправильно, переменная rabbit всегда пропускает 1 узел ( поэтому он «быстрее»), что означает, что у него есть потенциал пропустить узел черепахи, таким образом, имея возможность обойти бесконечный цикл 1 или более раз, прежде чем он станет тем же узлом, что и переменная черепаха, что будет означать худшее -сценарий не O (N).
Я что-то упустил? Я предполагаю, что оптимизация может заключаться в проверке rabbit.Next.Equals (turtle)
, но, поскольку ни один из комментариев не указывает на это, мне интересно, не упустил ли я что-то.