#29647 closed Bug (invalid)
"Please correct the error below." when saving edit model form with inline formset and space at the end of primary key value
Reported by: | Alex Uralov | Owned by: | nobody |
---|---|---|---|
Component: | contrib.admin | Version: | 2.1 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
I have an Attribute instance in DB with name 'Motor type ' (space in the end). Also, I have AttributeValueInlineAdmin as inline for AttributeAdmin. When I try to change field display_name for that instance in Django admin I get an error "Please correct the error below." with no errors shown.
The reason for that error is the space at the end of the primary key.
Attachments (2)
Change History (6)
by , 6 years ago
by , 6 years ago
Attachment: | admin_error.png added |
---|
follow-up: 2 comment:1 by , 6 years ago
I can't reproduce this given the models and admin you provided. Which version of Django are you using? Starting in Django 1.9:
CharField now strips input of leading and trailing whitespace by default. This can be disabled by setting the new strip argument to False.
The behavior I see when editing an Attribute
whose name
contains a trailing space is that a new instance is created because primary keys aren't editable as described in #2259.
comment:2 by , 6 years ago
Replying to Tim Graham:
I can't reproduce this given the models and admin you provided. Which version of Django are you using? Starting in Django 1.9:
CharField now strips input of leading and trailing whitespace by default. This can be disabled by setting the new strip argument to False.
The behavior I see when editing an
Attribute
whosename
contains a trailing space is that a new instance is created because primary keys aren't editable as described in #2259.
I use Django==2.0.8. Could you reproduce this by steps:
1) Create a new Attribute item without spaces. For example 'test'
2) Change the name (primary key) of the attribute via db query. UPDATE "public"."MODULE_attribute" SET "name" = 'test ' WHERE "name" = 'test'
3) Open Django admin panel and try to append any AttributeValue to 'test ' attribute.
4) I get the error message "Please correct the error below."
comment:3 by , 6 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
Yes, I can reproduce with those steps. Thanks. Inspecting the errors manually, I see [{'attribute': ['The inline value did not match the parent instance.']}]
. I think the root cause is that the trailing space is stripped in the parent instance but not for the child instance. I don't think this is a bug in Django but it could be considered a duplicate of #2259 in that the primary key probably shouldn't be editable in the first place. I think you could fix that using ModelAdmin.readonly_fields
.
Models and admin classes