Django:我如何更改ModelForm的Many2ManyField(选择标记)选择详细值?

时间:2009-06-12 08:05:10

标签: python django

例如:

我有以下型号

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 for Categories:

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

类似结构的样本类别树可能如下所示:

  • 品牌
    • 红色
  • 颜色
    • 红色

每个人在“类别”中都有一行。但是你会注意到2个不同的“红色”行,两个代表不同的东西,一个代表红色,另一个代表一个名为“红色”的品牌。

然而,在由表单中的标记表示的ForeignKey模型中,它将显示2个类似的“红色”选项。这是我希望更改标记的详细值以反映更相关的内容的地方。

自:

<option>Red</option>

要:

<option>Color > Red</option>

我该怎么做?

1 个答案:

答案 0 :(得分: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

那应该能满足你的期望。