date_hierarchy doesn't support GenerateField with output_field set to DateTimeField or DateField
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.
Change History
(8)
Description: |
modified (diff)
|
Has patch: |
set
|
Needs documentation: |
set
|
Needs tests: |
set
|
Severity: |
Normal → Release blocker
|
Triage Stage: |
Unreviewed → Accepted
|
Owner: |
set to john-parton
|
Status: |
new → assigned
|
Needs documentation: |
unset
|
Needs tests: |
unset
|
Triage Stage: |
Accepted → Ready for checkin
|
Resolution: |
→ fixed
|
Status: |
assigned → closed
|
Initial patch here: https://github.com/django/django/pull/18407
No docs or tests yet.