2012-06-29 110 views
0

有關在models.py中正確配置related_name以創建類別和子類別結構的任何建議?運行syncdb時出錯:Django related_name in Models

myapp.category: Accessor for field 'parent' clashes with related field 'Category.children'. Add a related_name argument to the definition for 'parent'. myapp.category: Reverse query name for field 'parent' clashes with related field 'Category.children'. Add a related_name argument to the definition for 'parent'. myapp.subcategory: Accessor for field 'parent' clashes with related field 'Category.children'. Add a related_name argument to the definition for 'parent'. myapp.subcategory: Reverse query name for field 'parent' clashes with related field 'Category.children'. Add a related_name argument to the definition for 'parent'.

我試圖做一個類別/子類別結構。例如,父類別是蘇打水公司(可口可樂,百事可樂等),子類別是蘇打類(可樂,蘇打水等)。子類別可以與不同父類別相關,反之亦然。

下面是我有問題搞清楚模型(用django-mptt):

class Category(MPTTModel): 
    site = models.ForeignKey(Site) 
    template_prefix = models.CharField(max_length=200, blank=True) 
    name = models.CharField(max_length=200) 
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children') 

     def __unicode__(self): 
     return self.name + u' Category' 

class SubCategory(MPTTModel): 
    name = models.CharField(max_length=50, unique=True) 
    parent = TreeForeignKey('Category', null=True, blank=True, related_name='children') 

    def __unicode__(self): 
     return self.name + u' SubCategory' 

任何建議都非常讚賞。謝謝

回答

1

您不能同時調用類別和FK從子類別到類別「children」的遞歸關係。爲其中一個選擇一個不同的名稱。

但是我必須說,這看起來不太適合MPTT。公司並不屬於樹木關係,因爲它們大概都處於同一水平,蘇打水也不屬於這種類型:例如,「可樂」成爲「波光粼粼的水」的孩子意味着什麼?聽起來你想要一個簡單的從公司到SodaType的ManyToMany關係,這樣每個公司都可以有許多種類型的汽水,每種類型都可以由幾家公司製造。

+0

想要使用mptt,因爲這種關係將比我上面提到的蘇打/公司類比要深得多。非常感謝你的偉大建議。 –