Does the concept of severity exist in Django's form validation or is it only errors?
Also, how about suppressing warnings/errors?
Old question, but I think it is still relevant.
It really depends on what you consider to be a warning.
contrib.messages
framework (or similar), you may display a warning box on the next page (be it the same form page, or a redirection to home or any other page)Alternatively, you might want confirmation instead of a warning. You may add or alter fields dynamically upon creation, so why not add hidden "I accept the risks" checkboxes that are required only if your form raises that warning?
The second option has the advantage of not requiring cookies, and it also adds interactivity (your user might not want to proceed because of the warning...).
In your code, all you would have to do is this:
#views.py
...
if form.is_valid():
# proceed
else:
form.fields["my_checkbox"].widget = widgets.CheckboxInput
# re-display form
...
#forms.py
...
def clean_myfield(self):
# do your cleaning
if (myfield_warning==True) and not (my_checkbox==True):
raise ValidationError("blabla")
else:
return myfield
In your view, you may check for appropriate errors in form.errors if needed.
Django forms can only raise ValidationErrors (see here). One way to get around this is to use the new messaging system. There are 5 levels of messages defined, with the ability to define additional custom message levels.
As for suppressing errors/warnings, you can always simply ignore form.errors
in your template. Also take a look at the clean
methods in the forms module - you should be able to suppress some warnings there.
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