Django-taggit与Django-treebeard或合适的分类法应用程序

时间:2017-08-29 20:19:09

标签: django tags taxonomy django-taggit django-treebeard

环境: Python 2.7.10 Django 1.11.3

问题 我需要一个Taxonomy系统而不仅仅是标签。例如:

  • 艺术>数码插画
  • 编程>网站>代码战斗
  • 编程>网站> Hackerrank
  • 编程>网站>代码战斗>街机>一级
  • 编程>代码挑战

环顾四周,我发现StackOverflow中的this post导致我blog post

这使我得到以下代码:

模型

class Taxonomy (TagBase, MP_Node):
    node_order_by = ['name']

class TaggedPost (ItemBase):
    content_object = models.ForeignKey('Post')
    tag = models.ForeignKey('Taxonomy', related_name='tags')

class Post(ItemBase):
    tags = TaggableManager(through=TaggedPost, blank=True)

管理

admin.site.register(Taxonomy, TreeAdmin)

问题是当我去管理员添加分类法时,我得到以下字段:

  • 名称
  • 蛞蝓
  • 路径
  • 深度
  • Numchild

最后两个并不意味着手动输入,所以说documentation of tree beard.

  

请勿直接更改path,depth或numchild的值:请改用其中一种方法。请将这些值设为只读。

我继续尝试自己输入它们,因为好奇心/愚蠢,树木破了。所以我不得不用这个黑客来修复它:

f = Taxonomy.objects.all()
from django.db.models import QuerySet
QuerySet.delete(f)

感谢the hack的用户“jrief”。

另一个问题是我无法再通过管理员访问发布模型。我收到以下错误:

/ admin / main / post中的FieldDoesNotExist 帖子没有属性'content_object'

请记住这是我的第一个Django项目和应用程序。欣赏您可能拥有的任何想法或分类法的优秀django应用程序,或者了解如何实施我需要的分类法。

1 个答案:

答案 0 :(得分:1)

我最终使用了应用Django Category并且它非常出色。只需按照简单的说明(几乎没有任何步骤!),一切都按预期工作。