django 在模板中分组
django group by in template
我正在尝试为我的用户记录记录更改的历史记录。
我有一个历史模型:
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 %}
不幸的是,我找不到分组的好方法,该方法将限制显示该字段一次,然后是下面的所有更改。如何通过分组来做到这一点?
使用 {% ifchanged %}
模板标签:
{% for change in changes %}
{% ifchanged %}<h1>{{change.field}}</h1>{% endifchanged %}
{{change.creation_date}}
{{change.author}}
{{change.action}}
to
{{change.new_value}}
<br>
{% endfor %}
我正在尝试为我的用户记录记录更改的历史记录。 我有一个历史模型:
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 %}
不幸的是,我找不到分组的好方法,该方法将限制显示该字段一次,然后是下面的所有更改。如何通过分组来做到这一点?
使用 {% ifchanged %}
模板标签:
{% for change in changes %}
{% ifchanged %}<h1>{{change.field}}</h1>{% endifchanged %}
{{change.creation_date}}
{{change.author}}
{{change.action}}
to
{{change.new_value}}
<br>
{% endfor %}