2012-11-09 2 views
1

이것은 this question과 매우 유사합니다. pass_count로 정렬 할 링크를 클릭하면 다음과 같이 표시됩니다.비 큐빗 셋 데이터 순서

'u'pass_count'필드를 필드로 확인할 수 없습니다. 선택 사항은 다음과 같습니다 구축,

models.py build_no :

class Run(DashboardBaseModel): 
class Meta: 
    db_table = 'runs' 

build_no = models.CharField(max_length=200, db_index = True) 
release = models.CharField(max_length=200, db_index = True) 
extra_fields = [ 
     'pass_count', 
     ] 

@property 
def pass_count(self): 
    passes = 0 
    for build in self.build_set.all(): 
     passes += build.pass_count 
    return passes 

tables.py :

class CombineTable(tables.Table): 
build_no = tables.LinkColumn('run', args=[A('release'), A('id')], verbose_name="Build") 
pass_count = tables.Column(verbose_name="Passed", attrs={"td": {"class": "num"}, "th": {"class": "num"}}) 

이 문제를 해결하는 방법이 있나요?

답변

0

비 db 필드를 정렬 할 수 있도록하려면 데이터를 사전으로 변환해야합니다.

runs = Run.objects.all() 

table_data = [] 
for run in runs: 
    passes = 0 
    for build in run.build_set.all(): 
     passes += build.pass_count 
    table_data.append(dict(
     build_no=run.build_no, 
     release=run.release, 
     pass_Count=passes, 
    )) 

table = CombineTable(table_data) 

참고 :이 작업은 데이터베이스를 한 번씩 쿼리합니다. 이를 해결하려면 빌드에 QuerySet이 필요하고 모든 빌드에 대해 루프가 실행에 기반한 사전에 각 빌드의 pass_count를 추가해야합니다.