데이터 테이블을 표시하기 위해 루핑 할 큰 데이터 집합이 있습니다. 문제는 반복하는 데 시간이 많이 걸리는데, 이것은 내부 도구이므로 현재로서는 괜찮습니다.하지만 개선하고 싶습니다.장고 템플릿에서 여러 목록을 반복하는 더 좋은 방법
모델 :
class Metric_Data(models.Model):
metric = models.ForeignKey(Metric)
count = models.IntegerField()
start_date = models.DateField()
내가 첫 번째 열은 날짜가 다음 각 다음과 같은 열이 해당 날짜의 수를 나열하는 메트릭입니다 테이블을 표시하고 있습니다. 그래서 같이 :
Dates Metric Metric Metric ...
10/11 10 11 12
11/11 22 100 1000
... ... ... ...
내가보기에있는 데이터를 통해 루핑 및 목록에서 테이블을 생성하고 렌더링하지만 몇 가지 측정이 오히려 느렸다 메트릭 당 데이터 포인트의 수천 템플릿이 전달했습니다. 이 때문에 내 처음 템플릿 태그를 작성할 수있는, 여전히 다소 느린
def getIndex(parser, token):
try:
tag_name, a_list, index = token.split_contents()
except ValueError:
raise template.TemplateSyntaxError, "%r tag requires exactly two arguments" % token.contents.split()[0]
return GetIndexNode(a_list, index)
class GetIndexNode(template.Node):
def __init__(self, a_list, index):
self.the_list = template.Variable(a_list)
self.index = template.Variable(index)
def render(self, context):
try:
the_list = self.the_list.resolve(context)
i = self.index.resolve(context)
return the_list[i]
except template.VariableDoesNotExist:
return ''
을 내가 뭔가 잘못했습니다 난 이후 템플릿 태그로 전환했다.
편집 :
def show_all(request):
metrics = Metric.objects.all()
dates = Metric_Data.objects.all().values_list('start_date',flat=True).distinct().order_by('start_date')
data = []
for metric in metrics:
data.append(Metric_Data.objects.filter(metric=metric).order_by('start_date').values_list('count', flat=True))
return render_to_response('metric/show_all.html', {'dates': dates,
'metrics': metrics,
'data': data})
편집 : : 그리고
<table id="theTable" class="paginate-5">
<thead>
<tr>
<th>Dates</th>
{% for metric in metrics %}
<th>{{ metric.name }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for date in dates %}
<tr>
<td>{{date}}</td>
{% for metric in data %}
<td>{% get_index metric forloop.parentloop.counter0 %}</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
내가 가장 좋은 장소를 생각하고 템플릿 나는 그렇게 같이보기에서 데이터를 가져 오는하고 이 문제를 해결하기 위해 모델에있을 수도 있지만 어떻게해야할지 모르겠습니다. 아마도 날짜에 대한 테이블을 만들고 해당 테이블에 대한 쿼리를 수행합니까?
감사합니다. 감사합니다.
어떻게 당신이 당신의 데이터베이스에서 데이터를 가져올 수 있습니까? – Kugel
보기와 함께 업데이트 됨 : –
이 태그를 호출하는 템플릿도 함께 표시하십시오. –