Если ваш статус - это значение, которое меняется, вы должны разбить его на две отдельные части.
Обновление статуса. Это должно быть вызвано в функции представления. Настоящая работа, однако, принадлежит модели. Функция view вызывает метод модели и выполняет сохранение.
Отображение статуса. Это просто строковое представление статуса.
Модель
class MyStatefulModel( models.Model ):
theState = models.CharField( max_length=64 )
def changeState( self ):
if theState is None:
theState= "viewed"
elif theState is "viewed":
theState= "learning"
etc.
Функция просмотра
def show( request, object_id ):
object= MyStatefulModel.objects.get( id=object_id )
object.changeState()
object.save()
render_to_response( ... )
Template
<p>Your status is {{object.theState}}.</p>