Вы можете сделать это, написав собственный Manager - просто переопределите метод get_queryset
и задайте для objects
экземпляр Manager.Например:
class MyModelManager(models.Manager):
def get_queryset(self):
return super(MyModelManager, self).get_queryset().filter(published=True)
class MyModel(models.Model):
# fields
# ...
objects = MyModelManager()
Подробнее см. документы .Это разумно, если это будет ваш обычный случай по умолчанию.Чтобы стать неопубликованным, создайте другого менеджера, к которому вы можете получить доступ, например, MyModel.unpublished_objects
.Опять же, в документах есть примеры подобных вещей.