¿Es posible anular .objetos en un modelo de django?

Me gustaría, por defecto, devolver solo las instancias “publicadas” (publish = True). ¿Es posible anular .objects para que MyModel.objects.all () devuelva MyModel.objects.filter (publish = True)?

¿Es esto sensato? ¿Cómo obtendría los no publicados en los raros casos en que los quería?

Puede hacer esto escribiendo un Administrador personalizado. Simplemente anule el método get_queryset y configure sus objects en una instancia de Administrador. Por ejemplo:

 class MyModelManager(models.Manager): def get_queryset(self): return super(MyModelManager, self).get_queryset().filter(published=True) class MyModel(models.Model): # fields # ... objects = MyModelManager() 

Vea los documentos para más detalles. Es sensato si ese va a ser su caso predeterminado por defecto. Para no publicar, cree otro administrador al que pueda acceder con algo como MyModel.unpublished_objects . Una vez más, los documentos tienen ejemplos sobre este tipo de cosas.