我有一个DateTimeRangeField,我想和django的date_hierarchy一起使用,但是date_hierarchy需要一个DateField或DateTimeField。
我已经编写了一个函数来使用range.lower将范围转换为datetime,但是使用callable似乎不起作用。
例如:
@admin.register(models.MyModel)
class MyModelAdmin(AdvancedModelAdmin):
date_hierarchy = 'date_range_to_datetime'
def date_range_to_datetime(instance):
"""
Return a datetime from django date range.
"""
return instance.range.lower有没有一种方法可以通过date_hierarchy使用DateTimeRangeField
发布于 2019-04-04 18:26:01
尽管其他一些地方声称,这个可以完成。但是你需要做两件事。首先,您需要在较低的值上进行注释。然后,您需要告诉静态管理检查跳过_check_date_hierarchy检查。
这在实践中并不难,但你必须知道你在做什么。这是一个非常精简的版本。timeframe是DateTimeRangeField。只需注意您用作date_hierarchy值的内容对于数据库是有效的,否则它会一直爆炸。
from django.contrib.postgres.fields.ranges import RangeStartsWith
class SkipDateHeirarchyChecks(admin.checks.ModelAdminChecks):
def _check_date_hierarchy(self, obj):
return []
@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
date_hierarchy = 'starts'
checks_class = SkipDateHeirarchyChecks
def get_queryset(self, request):
qs = super().get_queryset(request).annotate(
starts=RangeStartsWith('timeframe')
)https://stackoverflow.com/questions/46471981
复制相似问题