2010-01-29 5 views
1

아래에 표시된 Category 모델과 SearchForm 양식이 있습니다. 형태로 별도의 -toDjango : 필드 속성에 따라 템플릿의 양식을 사용자 정의합니다.

지정된 유형을 갖는 카테고리 인스턴스가 보여 -to 내 CSS에서 그들에게

를 특정 스타일을 적용 할 수 있도록 : 내 템플릿에이 일을하고 싶습니다 내 카테고리 인스턴스의 계층 구조

기본적으로 내 템플릿에서 카테고리의 상위 및 스타일에 액세스하거나 내 양식의 렌더링을 수정해야합니다. 어떻게해야합니까? 감사 7월

분류 모델

CATEGORY_TYPE = [ 
    (1, 'region'), 
    (2, 'type'), 
] 

class Category(models.Model): 

    parent = models.ManyToManyField('self', symmetrical=False, null=True, blank=True) 
    type = models.PositiveSmallIntegerField(choices=CATEGORY_TYPE) 

    class Translation(multilingual.Translation): 
     name = models.CharField(max_length=100, unique=True) 

    class Meta: 
     verbose_name_plural = 'Categories' 

    def __unicode__(self): 
     return "%s" %(self.name) 

SearchForm 클래스

class SearchForm(forms.Form): 

    query = forms.CharField(max_length=100, required=False) 
    price_range = forms.IntegerField(widget=forms.Select(choices = PRICE_RANGES_AND_EMPTY), required=False) 

    def __init__(self, *args, **kwargs): 
     super(SearchForm, self).__init__(*args, **kwargs) 
     self.fields['country'] = forms.ModelChoiceField(queryset=Country.objects.all().order_by('name'), empty_label='All', required=False) 
     self.fields['category'] = forms.ModelMultipleChoiceField(queryset=Category.objects.all().order_by('name'), 
widget=forms.CheckboxSelectMultiple(), required=False) 

답변

0

parentManyToManyField입니까? 카테고리에 부모가 둘 이상있을 수 있습니까?

다음은 category와 그 하위를 표시하고 유형 special의 범주 강조한다 : 파이썬에서

:

class Level: 
    def __init__(self, value): 
     self.value = value 

    def __str__(self): 
     return str(self.value) 

    def inc(self): 
     return Level(self.value + 1) 

render_to_response("render_category.html", { 'level' : Level(0), 'category' : category, 'special' : special }) 

render_category.html :

<div class = "category {% ifequal category.type special %}special{% endif %} level-{{ level }}"> 
    {% for child in category.category_set.all %} 
     {% with child as category %} 
      {% with level.inc as level %} 
       {% include "render_category.html" %} 
      {% endwith %} 
     {% endwith %} 
    {% endfor %} 
</div> 
+0

예, 범주 수를 여러 부모. 양식이 렌더링되는 방식을 수정하는 방법이 있습니까? – jul

+0

나는 그렇게 생각하지 않지만, 폼의 일부로 카테고리 목록이 정말로 필요한가요? 태그를 별도로 렌더링하고 모두

태그로 묶을 수 있습니다. 카테고리에 여러 개의 부모가있을 수 있다면 여러 번 표시 하시겠습니까? 그렇다면 각 최상위 카테고리에 대해 render_category를 호출하십시오. 그렇지 않다면 아마 사용자 정의 태그를 정의해야합니다. –

관련 문제