I'm keeping track of a user status on a model. For the model 'Lesson' I have the status 'Finished', 'Learning', 'Viewed'. In a view for a list of models I want to add the user status. What is the best way to do this?
One idea: Adding the request
to a models method would do the trick. Is that possible?
Edit: I meant in templatecode: {{ lesson.get_status }}
, with get_status(self, request)
. Is it possible? It does not work (yet).
If your status is a value that changes, you have to break this into two separate parts.
Updating the status. This must be called in a view function. The real work, however, belongs in the model. The view function calls the model method and does the save.
Displaying the status. This is just some string representation of the status.
Model
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.
View Function
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>
Yes, you can add a method to your model with a request paramater:
class MyModel(models.Model):
fields....
def update_status(self, request):
make something with the request...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With