#8040 closed (fixed)
SlugField format not enforced
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | Forms | Version: | dev |
Severity: | Keywords: | aug22sprint | |
Cc: | Triage Stage: | Ready for checkin | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
models.SlugField
is documented as "a short label for something, containing only letters, numbers, underscores or hyphens."
However, with forms.ModelForm
and newforms-admin, this formatting is not enforced. The ModelForms documentation instead states that models.SlugField
is represented by a forms.CharField
(ie. validation occurs).
models.SlugField.formfield()
should return a forms.RegexField
suitable for validating the field as a slug (and the ModelForms documentation should reflect this).
Attachments (2)
Change History (11)
comment:1 by , 16 years ago
comment:2 by , 16 years ago
Possibly related to model level validation propagation (a spoonful of sugar with that?)
comment:3 by , 16 years ago
milestone: | → 1.0 |
---|---|
Triage Stage: | Unreviewed → Accepted |
by , 16 years ago
Attachment: | 8040-slug-validation.diff added |
---|
comment:4 by , 16 years ago
Has patch: | set |
---|
I implemented that validation using a RegexField, but all the other models fields that need syntax validation define their own forms.Field subclass. I was reluctant to go ahead and add that at this point.
by , 16 years ago
Attachment: | 8040.patch added |
---|
updated patch (minor position change in fields/init.py)
comment:5 by , 16 years ago
Keywords: | aug22sprint added |
---|
test properly fails before applying fix, passes after, validation then works correctly after patch is applied - looks good to me :)
comment:6 by , 16 years ago
Triage Stage: | Accepted → Ready for checkin |
---|
comment:7 by , 16 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:8 by , 16 years ago
(In [8616]) Removed oldforms, validators, and related code:
- Removed
Manipulator
,AutomaticManipulator
, and related classes. - Removed oldforms specific bits from model fields:
- Removed
validator_list
andcore
arguments from constructors. - Removed the methods:
get_manipulator_field_names
get_manipulator_field_objs
get_manipulator_fields
get_manipulator_new_data
prepare_field_objs_and_params
get_follow
- Renamed
flatten_data
method tovalue_to_string
for better alignment with its use by the serialization framework, which was the only remaining code usingflatten_data
.
- Removed
- Removed oldforms methods from
django.db.models.Options
class:get_followed_related_objects
,get_data_holders
,get_follow
, andhas_field_type
. - Removed oldforms-admin specific options from
django.db.models.fields.related
classes:num_in_admin
,min_num_in_admin
,max_num_in_admin
,num_extra_on_change
, andedit_inline
. - Serialization framework
Serializer.get_string_value
now calls the model fields' renamedvalue_to_string
methods.- Removed a special-casing of
models.DateTimeField
incore.serializers.base.Serializer.get_string_value
that's handled bydjango.db.models.fields.DateTimeField.value_to_string
.
- Removed
django.core.validators
:- Moved
ValidationError
exception todjango.core.exceptions
. - For the couple places that were using validators, brought over the necessary code to maintain the same functionality.
- Moved
- Introduced a SlugField form field for validation and to compliment the SlugField model field (refs #8040).
- Removed an oldforms-style model creation hack (refs #2160).
Should read:
...(ie. no validation occurs)
;)