Django-теги показывают только теги отфильтрованных элементов
Мне было интересно, как вы можете отфильтровать объект в Django-теги.
Например, если вы написали статью, а статус по-прежнему draft
Вы, очевидно, не хотите показывать их, пока статья не была переведена в живое состояние.
Вы делаете это в {% tags_for_model products.Widget as widget_tags %}
или есть другой способ?
2 ответа
Вы можете сделать это, используя в своем представлении creation_for_model вы можете добавить фильтры, например:
Tag.objects.usage_for_model(ModelClass, filters={"status":1})
или создайте версию tags_for_model, которая принимает фильтры
Вы не фильтруете объекты, из которых извлекаются теги в тегах шаблона. Я не нашел прямой способ иметь теги для
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)