2009-11-12 2 views
1

현재 사용자 정의 주석 쿼 리셋을 사용하는 앱을 개발 중입니다. 현재 2 URL 설정이 있지만 사용자가 데이터를 요약하려는 각 필드마다 하나씩 필요합니다. 수동으로 구성 할 수도 있지만 DRY를 위반합니다! 기본적으로 기본적으로 +8 개의 URL을 사용합니다. 그래서 여기Django 템플릿 (object.x)에 필드 값을 동적으로 표시합니다.

은, 내가 무슨 짓을

  1. I 생성 된 사용자 정의 모델 관리자에게이
  2. 나는 전망을
  3. 나는 URL이 위 작품 모두

을 구성해야 .

기본적으로 URL 구성은 주석을 추가 할 필드의 이름 (SQL 사용자의 경우 그룹화 기준)을보기에 전달하고보기는 몇 가지 추가 처리를 수행하고 전달 된 필드를 기반으로 사용자 정의 모델 관리자를 실행합니다 .

URL은 다음과 같습니다

url('^(?P<field>[\w-]+)/(?P<year>\d{4})/(?P<month>\d+)/(?P<day>\d+)/$','by_subtype', name='chart_link'), 

필드이의 검색어가 실제로 실행될 때 사용되는 그 DB에있는 열입니다. 보기에서 내 사용자 지정 관리자에게 전달됩니다. 아래 매니저 코드의 예이다

return self.filter(start_date_time__year=year).filter(start_date_time__month=month).filter(start_date_time__day=day).values(field).annotate(Count(field)) 

는 또, 컨텍스트 변수 필드의 값을 전달한다. 링크를 동적으로 작성하는 데 사용됩니다. 그러나 문제는 실제로 쿼리 세트를 반복하고 데이터를 표시합니다.

그래서 당신의 전형적인 템플릿 코드는 다음과 같습니다

{% for object in object_list %} 
{{ object.sub_type }} : {{ object.sub_type__count|intcomma }} 
{% endfor %} 

을 기본적으로, 당신은 하드 코드에 현장으로 모니터하기 위해 (즉 object.x)가 어쨌든 동적이 할당? 즉 다음 템플릿에서 필드 = 비즈니스 는 자동으로 처리해야하는 경우 : 이것은

{{ object.business }} 

을 할 수 있습니까? 아니면 여러 URL을 만들어야합니까? 또는 동일한 결과, 단일 뷰 및 URL 쿼리를 동적으로 처리하는 더 좋은 방법이 있습니다.

github에서 코드를 찾을 수 있습니다. 템플릿 부분이 이제이 스 니펫을 사용하여 작동합니다. http://www.djangosnippets.org/snippets/1412/ 그럼 나중에이 기능을 사용하여 비슷한 결과를 얻으려면 github에서 코드 스 니펫을 살펴보십시오.

# in the views.py: 
field = 'business' 


{# in the template: #} 
{{ object.field }} 

및 출력에 표시 object.business의 값이 : 당신의 라인을 따라 뭔가를하고 싶은처럼 http://gist.github.com/233262

답변

1

소리가 난다. Django 템플릿 언어에서는이 기능을 사용할 수 없습니다. 당신이 생각 달성하는 데 사용할 수있는 템플릿 필터를 정의 조각이있다

: http://www.djangosnippets.org/snippets/1412/

+0

안녕 네드, 네이 바로 그 것이다.나는 사용자 정의 templatetag를 만들려고했지만 templatetag/template 등의 구문 분석과 관련이 있다고 생각합니다. 스 니펫이 작동하는 것처럼 보입니다. 그것을 줄 것이다. – ismail

+0

감사합니다. – ismail