0

关于在 models.py 中正确配置related_name以创建类别和子类别结构的任何建议?运行时出错syncdb

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'

非常感谢任何建议。谢谢

4

1 回答 1

1

您不能同时调用 Category 上的递归关系和从 SubCategory 到 Category “children”的 FK。为其中一个选择不同的名称。

不过,我必须说,这似乎根本不适合 MPTT。公司不会陷入树状关系,因为它们可能都处于同一水平,苏打水类型也不会:例如,“可乐”成为“苏打水”的孩子意味着什么?听起来您想要从 Company 到 SodaType 的简单多对多关系,以便每个公司可以有多种苏打水类型,并且每种类型都可以由几家公司生产。

于 2012-06-29T21:08:07.377 回答