有关在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'
非常感谢任何建议。谢谢
答案 0 :(得分:1)
您无法同时将类别和FK上的递归关系从SubCategory调用到类别“children”。为其中一个选择一个不同的名称。
但是,我必须说,这似乎不适合MPTT。公司不属于树关系,因为它们可能都处于同一水平,苏打类型也没有:例如,“可乐”成为“苏打水”的孩子意味着什么?听起来你想要一个从Company到SodaType的简单ManyToMany关系,这样每个公司都可以有很多苏打类型,每种类型都可以由几家公司制作。