#13717 closed (worksforme)
unique_for_* errors out when date field is left empty
Reported by: | Silvio J. Gutierrez | Owned by: | Satoru Logic |
---|---|---|---|
Component: | contrib.admin | Version: | 1.2 |
Severity: | Keywords: | ||
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | yes | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Using Django 1.2.1, create a simple model, like so:
from django.db import models class Article(models.Model): title = models.CharField(max_length=200) pub_date = models.DateField() slug = models.SlugField(max_length=150, unique_for_year='pub_date')
and register it with the admin site in admin.py; the standard registration is fine:
from django.contrib import admin from models import Article admin.site.register(Article)
Go to create an article, and enter "abc" as the tile and the slug, but leave the date empty. On submission, you'll get 'NoneType' object has no attribute 'day'
.
The error seems to apply to unique_for_year and unique_for_month as well, though the error displays "no attribute 'year'" and "no attribute 'month'" respectively, naturally. No error occurs if the field marked as unique_for_* is left empty, in this case the slug. Rather the actual validation message comes up. My guess is that the date field needs to be checked to see if it's empty first, and then check for uniqueness.
In short, rather than displaying the validation for "this field is required" which is user friendly, the submission errors out. The same setup does not error out on Django 1.1.2.
Let me know if you need any more details,
Silvio
Attachments (1)
Change History (7)
comment:1 by , 14 years ago
Component: | Uncategorized → django.contrib.admin |
---|
comment:2 by , 14 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
by , 14 years ago
Attachment: | 13717_fix_unique_for.diff added |
---|
follow-up: 4 comment:3 by , 14 years ago
Needs tests: | set |
---|
comment:4 by , 14 years ago
Replying to Alex:
Hi, Alex.
I'm not quite sure where should I put my test code in, could you please tell me?
comment:5 by , 14 years ago
Resolution: | → worksforme |
---|---|
Status: | assigned → closed |
Hi, this works for me as of 14551
comment:6 by , 14 years ago
I was still getting non-producible errors after this bug was closed, but the fix for bug #14951 should definitely fix it.
Make sure the value of the
unique_for
field is not None before making the query.