#35628: date_hierarchy doesn't support GenerateField with output_field set to
DateTimeField or DateField
-------------------------------+--------------------------------------
Reporter: john-parton | Owner: (none)
Type: Bug | Status: new
Component: contrib.admin | Version: 5.0
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed
Has patch: 1 | Needs documentation: 1
Needs tests: 1 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------+--------------------------------------
Changes (by john-parton):
* has_patch: 0 => 1
* needs_docs: 0 => 1
* needs_tests: 0 => 1
Old description:
> If you have a GeneratedField with output_field set to DateField or
> DateTimeField, you cannot use it in the admin as a `date_hierarchy`
> because of a check. If you skip the check, it actually works just fine in
> my testing. I believe this the check could be adjusted to account for
> this.
>
> {{{
> # models.py
> class TestModel(models.Model):
> date_range = DateTimeRangeField(_("Date range"))
> start_date = models.GeneratedField(
> expression=Lower("date_range"),
> output_field=models.DateTimeField(),
> db_persist=True,
> )
>
>
> # admin.py
> class TestAdmin(admin.ModelAdmin):
> date_hierarchy = "start_date"
>
> # Skipping checks actually makes this work exactly correctly
> def check(self, *args, **kwargs):
> return ()
>
> }}}
>
> I'll see if I can whip up a patch.
New description:
If you have a GeneratedField with output_field set to DateField or
DateTimeField, you cannot use it in the admin as a `date_hierarchy`
because of a check. If you skip the check, it actually works just fine in
my testing. I believe this the check could be adjusted to account for
this.
{{{
# models.py
class TestModel(models.Model):
date_range = DateTimeRangeField(_("Date range"))
start_date = models.GeneratedField(
expression=Lower("date_range"),
output_field=models.DateTimeField(),
db_persist=True,
)
# admin.py
class TestAdmin(admin.ModelAdmin):
date_hierarchy = "start_date"
# Skipping checks actually makes this work exactly correctly
def check(self, *args, **kwargs):
return ()
}}}
I'll see if I can whip up a patch.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/35628#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/01070190e61cfdb3-7e5bba55-cc3e-4d21-beb4-edd0f35397b5-000000%40eu-central-1.amazonses.com.