Andrea Rabbaglietti
Andrea Rabbaglietti

Reputation: 948

Raise django admin validation error from a custom view

I've some custom views in django-admin linked to my change_form. All works well, but now I'd want to raise a ValidationError from my custom views and consequently get the flash in django-admin that prints the msg of ValidationError, that is the same that occurs if I raise it in model.clean().

an example of custom view that I use:

@site.admin_view
def send_transaction_mail(request, obj_id, typ):
    order = Order.objects.get(id=obj_id)
    if typ == 'SHIPMENT':
        send_order_confirm(order)
    else:
        raise Exception("Something goes wrong sending transaction mail")
    return HttpResponseRedirect(request.META['HTTP_REFERER'])

is there a way? Thank you

Upvotes: 1

Views: 2725

Answers (1)

Ricola3D
Ricola3D

Reputation: 2442

Not sure I understood what you want well:

You have a view, by definition a public page. You want it to display an error message in the admin pages (by definition privates page) ? It's odd. But if you want so.

To display an error in the admin pages, use the Django Message Framework. It's what is in use to display the yellow rows with errors/notifications on the top of the pages.

from django.contrib import messages
messages.error(request, "Something goes wrong sending transaction mail");

Indeed, validation errors an only displayed with forms. And thus, they are to be raised only in the clean() method of a form, a formset, or a field.

Upvotes: 1

Related Questions