2010-12-26 4 views
0

이 같은 두 가지 모델이 있습니다템플릿의 _set에 map()을 사용하고 있습니까?

class KPI(models.Model): 
    """KPI model to hold the basic info on a Key Performance Indicator""" 
    title = models.CharField(blank=False, max_length=100) 
    description = models.TextField(blank=True) 
    target = models.FloatField(blank=False, null=False) 
    group = models.ForeignKey(KpiGroup) 
    subGroup = models.ForeignKey(KpiSubGroup, null=True) 
    unit = models.TextField(blank=True) 
    owner = models.ForeignKey(User) 
    bt_measure = models.BooleanField(default=False) 

class KpiHistory(models.Model): 
    """A historical log of previous KPI values.""" 
    kpi = models.ForeignKey(KPI) 
    measure = models.FloatField(blank=False, null=False) 
    kpi_date = models.DateField() 

나는 내부 월 보드에 대한 통계를 표시 할 RGraph을 사용하고 있습니다를, 편리한 것은 파이썬리스트에 의해 때문에, 자바 스크립트가 배열로 보는 형식으로 출력을 얻을 수있다 이 같은 목록에 모든 값을 매핑 :

def f(x): return float(x.measure) 
stats = map(f, KpiHistory.objects.filter(kpi=1) 

다음 템플릿에 단순히

{{ stats }} 

과 일을 사용할 수 있습니다 e RGraph 코드는 그것을 원하는 배열로 봅니다.

[87.0, 87.5, 88.5, 90] 

그래서 제 질문은 이것이다, 나는 지금이 전달 된 것까지, 템플릿에 전달하고있어 데이터의 양을 유지하기 위해 장고의 _set 기능을 사용하여 동일한 효과를 얻을 수있는 방법이있다 하나의 KPI 객체 그래프 수 있지만, 지금은 내가 _set로 할 수있는 일

{{ kpi.kpihistory_set }} 

전체 모델을 덤프가 전체 무리를 전달하고 싶지만, 난 그냥 측정 필드를합니다.

필자가 원하는 단일 필드를 추출 할 수있는 기본 제공 템플릿 방법을 볼 수 없습니다.

이 상황을 다른 사람들이 어떻게 처리 했습니까?

답변

0

템플릿을 사용하지 않고 뷰 기능에서 특정 요청에 표시해야하는 인스턴스를 결정하려면 논리를 수행해야합니다.

+0

저는보기에서 KPI를 선택했습니다. 해당하는 KpiHistory 레코드를 목록으로 사용할 수 있기를 원하지만 전체 모델이 아닌 값만 사용할 수 있습니다. 이제지도 함수를 사용할 때의 결과와 비슷합니다. –

+0

그래서지도의 결과를 템플릿 컨텍스트 변수로 설정하십시오. – SingleNegationElimination

+0

내가 표시하고 싶은 KPI가 여러 개있을 때 모델에서 다른 정보를 사용하면 정보를 두 번 (모델에서 한 번, 목록에서 한 번) 보내면 특히 효율적이지 않습니다. 그것을하는 더 좋은 방법이 있기를 바랬습니다. –

관련 문제