django-tagging仅显示已过滤项目的标签

时间:2011-02-28 07:37:46

标签: django django-templates django-apps django-tagging

我想知道如何在django-tagging中过滤对象。

例如,如果您撰写了一篇文章并且状态仍为draft,那么在文章被推送到实时状态之前,您显然不希望显示这些内容。

您是在{% tags_for_model products.Widget as widget_tags %}中进行还是以其他方式进行?

2 个答案:

答案 0 :(得分:1)

您不会过滤模板标签上检索标记的对象。 我没有找到一个直接的方法来为

添加标签
Product.objects.filter(draft= False)

我要做的是创建像ProductsProduct

这样的Product的代理模型
class PublishedProduct(Product):
    objects = PublishedProductManager()
    class Meta:
        proxy = True

然后设置其默认管理器以从过滤器返回子集(例如filter(draft = False))

class PublishedProduct(models.Manager):
    def get_query_set(self):
        return super(PublishedProduct, self).get_query_set().filter(draft= False)

答案 1 :(得分:1)

您可以在视图中使用usage_for_model来添加过滤器,例如

Tag.objects.usage_for_model(ModelClass, filters={"status":1})

或创建一个接受过滤器的tags_for_model版本