2009-06-12 1 views
1

Например:Django: Как я могу изменить многомерные шаблоны ModelForm (выбрать тег) для подробных значений?

У меня есть модель последующей

class Categories(models.Model): 
    name = models.CharField(max_length=100,verbose_name="Category Name") 
    parent_cat = models.ForeignKey('self',verbose_name="Parent Category",null=True,blank=True,related_name="child_cat") 
    description = models.TextField(verbose_name="Category Description",blank=True) 

Как можно видеть, это дерево-структура таблицы. У меня также есть ModelForm, которые состоят из ForeignKey для Категории:

p_category = models.ForeignKey(Categories,verbose_name="Category") 

Пробу дерево категорий, как структура может быть следующей:

  • Марки
    • Красной
  • Цвет
    • Red

Каждый из них имеют ряд в Категории. Однако вы заметили бы 2 разных «красных» ряда, которые представляют разные вещи, 1 красного цвета, другой марки «Красный».

Однако в модели модели ForeignKey, которая представлена ​​тегом в форме, он будет показывать 2 аналогичных варианта «Красный». Здесь я надеюсь изменить многословную ценность тега, чтобы отразить что-то более актуальное.

От:

<option>Red</option> 

To:

<option>Color > Red</option> 

Как я могу это сделать?

ответ

0

Я не уверен, если это лучший способ, но вы можете изменить модель Категории так это выглядит следующим образом:

class Categories(models.Model): 
    name = models.CharField(max_length=100,verbose_name="Category Name") 
    parent_cat = models.ForeignKey('self',verbose_name="Parent Category",null=True,blank=True,related_name="child_cat") 
    description = models.TextField(verbose_name="Category Description",blank=True) 

    def __unicode__(self): 
     name = '' 
     if self.parent_cat: 
      name = self.parent_cat + ' &gt; ' 
     return name + self.name 

Это должно дать вам то, что вы ожидаете.

Смежные вопросы