#models.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
from .managers import NewsQuerySet
class Product(models.Model):
is_published = models.BooleanField(
default=False,
verbose_name=u'Показывать на сайте',
)
title = models.CharField(
max_length=200,
verbose_name=u'Название',
)
objects = NewsQuerySet.as_manager()
class Meta:
verbose_name = u'Новость'
verbose_name_plural = u'Новости'
def __unicode__(self):
return self.title
Я обычно делаю так. Создаю менеджер, в нём фильтр на публикацию.
#managers.py
# -*- coding: utf-8 -*-
from django.db import models
class NewsQuerySet(models.QuerySet):
def published(self):
return self.filter(is_published=True)
Вызываю это так
#views.py
# -*- coding: utf-8 -*-
from django.views.generic import ListView, DetailView
from .models import News
class NewsList(ListView):
queryset = News.objects.published()
class NewsDetail(DetailView):
queryset = News.objects.published()