Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3306134
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 17, 20262026-05-17T21:15:09+00:00 2026-05-17T21:15:09+00:00

I have a Django form that will add an entry to a database with

  • 0

I have a Django form that will add an entry to a database with a unique constraint on one of the columns. If the submission happens to attempt creation of a duplicate, I get a django.db.utls.IntegrityError stating I violated the unique constraint (thankfully).

When processing Django forms, there are a number of ways to validate:

  1. Override the form class’ clean method
  2. Override the form class’ clean_<field> method

If the clear_<field> method raises a django.forms.ValidationError, the error message will be appended to a list in the _errors dictionary under the field’s name. When using the clean method, errors should be manually inserted into the _errors dict.

Now, the clean and clean_<field> methods don’t sound like a nice place to put code that has side effects, and I fear that checking at this moment whether the value is unique does not guarantee I won’t get IntegrityErrors. I would prefer to actually try and create the row in the database and signal a form error when a constraint is violated.

My main problem is that forms expose a public property errors which is read-only. Therefore, I should, according to the docs, add a method in my form that does all the work, try to insert in the database and register an error when an IntegrityError is raised. Because the action that processes the form after validation requires lots of other data, I don’t want to put the code inside the form class itself.

Is there any other (documented or not) way to go about adding an entry in the errors dict from outside the class, or should I simply access the _errors “private” variable and be happy with that? I know this sounds like an OOP breach, but creating an extra method just to access this “private” variable does not seem to me like it shields anybody from anything.

Edit:
Seems like someone else already raised a similar question, but it seems the answers pointed to manual insertion into _errors…

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-17T21:15:09+00:00Added an answer on May 17, 2026 at 9:15 pm

    For now, a simple solution is the following:

    try:
        # Try to save model instance, which might throw `IntegrityError`.
        # ...
    except django.db.utils.IntegrityError:
        # The form passed validation so it has no errors.
        # Use the `setdefault` function just in case.
        errors = django.forms.util.ErrorList()
        errors = form._errors.setdefault(
            django.forms.forms.NON_FIELD_ERRORS, errors)
        errors.append('Sorry, this username is already in use.')
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a web report that uses a Django form (new forms) for fields
If I have a Django form such as: class ContactForm(forms.Form): subject = forms.CharField(max_length=100) message
I have written a Django app that makes use of Python threading to create
Assume I have a form class SampleClass(forms.Form): name = forms.CharField(max_length=30) age = forms.IntegerField() django_hacker
Does Django have any template tags to generate common HTML markup? For example, I
I have a Django model with a large number of fields and 20000+ table
I have the following Django and Flex code: Django class Author(models.Model): name = models.CharField(max_length=30)
I have configured my Django app to run under Apache+FastCGI on Linux (Ubuntu, if
I stumbled over this passage in the Django tutorial : Django models have a
I have a pretty standard django app, and am wondering how to set the

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.