time field not updated on refresh

I have timefield in my model:

time_entered= models.TimeField(default=datetime.now().strftime("%H:%M"))

in forms i am only getting that field to be displayed:

class PrayerForm(forms.ModelForm):

    class Meta:
        model = Prayer
        fields = 'time_entered',

when displaying the page the time is correct but when reloading the page it stays the old value. is it because the default has default of string value? how to fix this?

You are correct. When your class is loaded, Python is going to call the now function and convert it to a string. That’s now part of the definition of that class and will not be changed.

Additionally, once an instance of that class has been created, the field is no longer null, so that field would never be updated by using the default parameter.

You’re probably looking for either auto_now or auto_now_add.