2013-10-14 32 views
1

我没有要求谁在什么时候一个标签创建等方面都使用Django的taggit像这样Django的taggit自定义“标签”的模式和request.user

class Topics(TagBase): 
    featured = models.BooleanField(_('Featured'), default=False) 

    created = models.DateTimeField(_('Creation date'), auto_now_add=True, editable=False) 
    created_by = models.ForeignKey(User, related_name="topic_created_by") 


class ArticleTopic(ItemBase): 
    content_object = models.ForeignKey('Article') 
    tag = models.ForeignKey(Topics, related_name="topic_items") 


class Article(models.Model): 
    title = models.CharField(_('Title'), max_length=255) 

    excerpt = models.TextField(_('Excerpt')) 
    content = models.TextField(_('Content'), blank=True) 

    topics = TaggableManager(through=ArticleTopic) 

    created = models.DateTimeField(_('Creation date'), auto_now_add=True, editable=False) 
    created_by = models.ForeignKey(User, related_name="article_created_by") 

创建一个自定义标签模型来追踪我正在使用django-autocomplete-light为管理中的主题创建一个自动填充字段,并在保存文章表单时输入新的Topic创建它。

虽然我知道我可以在管理形式得到request.user,并将它传递直通的save_model方法 - 这是我在做什么的文章模型 - 我无法弄清楚如何为主题做模型。

在此先感谢

+0

也许在干净的标签? – jpic

+0

@jpic不是。在文章被保存之前,主题需要Article实例来生成关系。我必须在那里重新创建taggit的TaggableManager()功能 - 假设这甚至是可能的。 – affan

回答

2

我遇到了类似的问题,分叉的Django taggit添加此功能:https://github.com/professorplumb/django-taggit

您可以通过自定义添加的属性或标签模式,像这样:

article.topics.add('topic1', 'topic2', created_by=request.user) 
+0

这看起来正是我所需要的。谢谢!但是,我无法让它工作。错误是'companies.companytype:'主题'是通过模型CompanyTopic手动定义的m2m关系,该主题和公司类型没有外键,我认为它与'attname'有关,但我不知道在哪里设置它。 – affan

+0

我使用'GenericTaggedItemBase'如果有帮助 – affan

+0

得到它的工作。切换回稳定版本并包含您的提交。无法说出开发版本中发生了什么变化,这些变化与我的代码不兼容,但是在将来需要处理。 – affan