74
Old question, but worth at least a small example as I think this is quite a common issue.
@Davor Lucic pointed to the right solution.
As of today, Django ships with a cool message framework that helps a lot with this.
So, say you want to give notice within the Django Admin whenever a car object within your Car model changes owner, you could do something like that:
admin.py
from django.contrib import admin
from django.contrib import messages
from .models import Car
@admin.register(Car)
class CarAdmin(admin.ModelAdmin):
list_display = ('owner', 'color', 'status', 'max_speed', )
def save_model(self, request, obj, form, change):
if 'owner' in form.changed_data:
messages.add_message(request, messages.INFO, 'Car has been sold')
super(CarAdmin, self).save_model(request, obj, form, change)
It’s worth mentioning that if you want to include HTML tags in your message, you have to add:
from django.utils.safestring import mark_safe
which allows you to do something like:
messages.add_message(request, messages.INFO, mark_safe("Please see <a href='/destination'>here</a> for further details"))
No need to say you’d better be sure the code you’re adding is REALLY safe.
Nothing exceptional, but maybe (and hopefully) someone will find it useful.
17
You can override save_model
method on ModelAdmin
so you can add message using message framework after you save your object.
- [Django]-Form field description in django admin
- [Django]-Does django with mongodb make migrations a thing of the past?
- [Django]-Is there a list of Pytz Timezones?
9
@Seether answer is right but it display 2 messages as mentioned by @Uday in comment.
Display only one custom message
Answered by @Dylan For anyone who needs to eliminate the automatic Django success message in a more flexible way or
from django.contrib import messages
class SomeAdmin(admin.ModelAdmin):
def message_user(self, *args): # overridden method
pass
def save_model(self, request, obj, form, change):
messages.add_message(request, messages.INFO, 'Custom message goes here')
- [Django]-Resize fields in Django Admin
- [Django]-Bad request 400: nginx / gunicorn
- [Django]-Write only, read only fields in django rest framework
0
Overriding "save_model()", you can set and show a custom message and don’t forget to import "messages" as shown below:
from django.contrib import admin
from .models import MyModel
from django.contrib import messages # Here
@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
# Here
def save_model(self, request, obj, form, change):
obj.save()
messages.add_message(request, messages.INFO, 'Custom Message')
- [Django]-UnicodeEncodeError: 'ascii' codec can't encode character
- [Django]-Django: TemplateSyntaxError: Could not parse the remainder
- [Django]-Get class name of django model