mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #19963 -- Added support for date_hierarchy across relations.
This commit is contained in:
committed by
Tim Graham
parent
89ca112884
commit
2f9c4e2b6f
@@ -840,12 +840,16 @@ class ModelAdminChecks(BaseModelAdminChecks):
|
||||
return []
|
||||
else:
|
||||
try:
|
||||
field = obj.model._meta.get_field(obj.date_hierarchy)
|
||||
except FieldDoesNotExist:
|
||||
return refer_to_missing_field(
|
||||
option='date_hierarchy', field=obj.date_hierarchy,
|
||||
model=obj.model, obj=obj, id='admin.E127',
|
||||
)
|
||||
field = get_fields_from_path(obj.model, obj.date_hierarchy)[-1]
|
||||
except (NotRelationField, FieldDoesNotExist):
|
||||
return [
|
||||
checks.Error(
|
||||
"The value of 'date_hierarchy' refers to '%s', which "
|
||||
"does not refer to a Field." % obj.date_hierarchy,
|
||||
obj=obj.__class__,
|
||||
id='admin.E127',
|
||||
)
|
||||
]
|
||||
else:
|
||||
if not isinstance(field, (models.DateField, models.DateTimeField)):
|
||||
return must_be('a DateField or DateTimeField', option='date_hierarchy', obj=obj, id='admin.E128')
|
||||
|
||||
@@ -5,7 +5,8 @@ import warnings
|
||||
|
||||
from django.contrib.admin.templatetags.admin_urls import add_preserved_filters
|
||||
from django.contrib.admin.utils import (
|
||||
display_for_field, display_for_value, label_for_field, lookup_field,
|
||||
display_for_field, display_for_value, get_fields_from_path,
|
||||
label_for_field, lookup_field,
|
||||
)
|
||||
from django.contrib.admin.views.main import (
|
||||
ALL_VAR, ORDER_VAR, PAGE_VAR, SEARCH_VAR,
|
||||
@@ -346,7 +347,7 @@ def date_hierarchy(cl):
|
||||
"""
|
||||
if cl.date_hierarchy:
|
||||
field_name = cl.date_hierarchy
|
||||
field = cl.opts.get_field(field_name)
|
||||
field = get_fields_from_path(cl.model, field_name)[-1]
|
||||
dates_or_datetimes = 'datetimes' if isinstance(field, models.DateTimeField) else 'dates'
|
||||
year_field = '%s__year' % field_name
|
||||
month_field = '%s__month' % field_name
|
||||
|
||||
Reference in New Issue
Block a user