2010-01-29 155 views
1

我已經得到如下所示的Category模型和SearchForm表單。我想要做的兩件事情在我的模板:Django:根據字段屬性自定義模板中的表單

-to形式單獨具有給定類型的分類情況下,能夠爲特定樣式應用到他們在我的CSS

-to顯示我的類別實例的層次結構

基本上我需要訪問我的模板中類別的父級和樣式,或者修改我的表單的呈現。 我該怎麼做? 感謝 七月

分類模型

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

爲什麼parent一個ManyToManyField?一個類別可以有多個父項嗎?

下面應顯示category及其後代,並突出顯示類型special的類:

在Python:

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 2010-01-30 20:38:38

+0

我不這麼認爲,但是你真的需要將類別列表作爲表單的一部分嗎?您可以單獨渲染它,並將所有標記都包含在

標記中。 如果一個類別可以有多個父母,你想讓它多次顯示嗎?如果是,只需爲每個頂級類別調用render_category。如果不是,您可能應該爲此定義一個自定義標籤。 – 2010-01-30 22:24:21

相關問題