2015-02-12 5 views
0

Я пытаюсь записать историю изменений записей для своих пользователей. Я получил в истории модели:группа django по шаблону

class History(models.Model): 
concerning  = models.ForeignKey(User) 
field   = models.CharField(max_length=30) 
creation_date = models.DateTimeField(auto_now_add=True) 
author   = models.ForeignKey(User, related_name='autor_history_info') 
action   = models.CharField(max_length=30) 
new_value  = models.CharField(max_length=1000) 

и просмотра истории:

def get_history(request): 
changes = History.objects.all().filter(concerning=request.user).order_by('field') 

return render(request, "get_history.html", {"changes" : changes) 

и шаблон истории:

{%for change in changes %} 
    <h1>{{change.field}} </h1> 
    {{change.creation_date}} 
    {{change.author}} 
    {{change.action}} 
    to 
    {{change.new_value}} 
    <br> 
{% endfor %} 

Я, к сожалению, не могу найти хороший способ сделать группу, которая ограничивает однократное отображение поля, а затем все изменения ниже. Как сделать группу для этого?

+0

пожалуйста объяснить, что поле вы надеетесь группе? или опубликовать некоторый образец вывода так, как вы хотите, чтобы он выглядел. –

+1

Это именно тот случай, для которого встроен фильтр 'перегруппировки'. Проверьте документы, это на сложной стороне, но она работает хорошо: https://docs.djangoproject.com/en/1.7/ref/templates/builtins/#regroup. Или, может быть, 'ifchanged' будет делать все, что вам нужно, что проще. –

ответ

2

Используйте {% ifchanged %} тег шаблона:

{% for change in changes %} 

    {% ifchanged %}<h1>{{change.field}}</h1>{% endifchanged %} 

    {{change.creation_date}} 
    {{change.author}} 
    {{change.action}} 
    to 
    {{change.new_value}} 
    <br> 

{% endfor %} 
Смежные вопросы