Django-теги показывают только теги отфильтрованных элементов - PullRequest
0 голосов
/ 28 февраля 2011

Мне было интересно, как вы можете отфильтровать объект в django-тегах.

Например, если вы написали статью, а статус все еще draft, вы, очевидно, не хотите показывать их достатья была переведена в живое состояние.

Вы делаете это в {% tags_for_model products.Widget as widget_tags %} или есть другой способ?

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Вы можете сделать это, используя в своем представлении creation_for_model вы можете добавить фильтры, например,

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

или создать версию tags_for_model, которая принимает фильтры

1 голос
/ 28 февраля 2011

Вы не фильтруете объекты, из которых извлекаются теги в тегах шаблона.Я не нашел прямого способа иметь теги для

Product.objects.filter(draft= False)

. Что я хотел бы сделать, это создать прокси-модель для продукта, такого как Опубликованный продукт

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)
...