I'm trying to let users view records in the admin but not save anything. So I'm trying to do something like this:
def save_model(self, request, obj, form, change):
"""Override save method so no one can save"""
messages.error(request, "No Changes are permitted from this screen."
" To edit projects visit the 'Projects' table, and make sure you are"
" in the group 'Visitor_Program_Managers'.")
This works however I get two messages on the next screen:
My message above first And then a "The ... was changed successfully."
How can I prevent the second message?
You can hide certain messages and show others. In your case, you are interested in not displaying the the success message. You can do the following:
def save_model(self, request, obj, form, change):
messages.set_level(request, messages.ERROR)
messages.error(request, 'No changes are permitted ..')
Just override def message_user(...) method, do it as follows:
def message_user(self, request, message, level=messages.INFO, extra_tags='',
fail_silently=False):
pass
def save_model(self, request, obj, form, change):
messages.success(request, 'Write your overrided message here...')
pass
For anyone who needs to eliminate the automatic Django success message in a more flexible way than proposed by the accepted answer, you can do the following:
from django.contrib import messages, admin
class ExampleAdmin(admin.ModelAdmin):
def message_user(self, *args):
pass
def save_model(self, request, obj, form, change):
super(ExampleAdmin, self).save_model(request, obj, form, change)
if obj.status == "OK":
messages.success(request, "OK!")
elif obj.status == "NO":
messages.error(request, "REALLY NOT OK!")
If you want to prevent success message in case of failure message then you must have to set the error level of the messages.
Something like this ->
if already_exist:
messages.set_level(request, messages.ERROR)
messages.error(request, 'a and b mapping already exist. Please delete the current entry if you want to override')
else:
obj.save()
It will avoid coming two messages (Success and Failure) at the same time because we have suppressed success message by changing the error level.
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