首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与date_hierarchy一起使用的Django DateTimeRangeField

与date_hierarchy一起使用的Django DateTimeRangeField
EN

Stack Overflow用户
提问于 2017-09-28 22:43:24
回答 1查看 453关注 0票数 2

我有一个DateTimeRangeField,我想和django的date_hierarchy一起使用,但是date_hierarchy需要一个DateFieldDateTimeField

我已经编写了一个函数来使用range.lower将范围转换为datetime,但是使用callable似乎不起作用。

例如:

代码语言:javascript
复制
@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

EN

回答 1

Stack Overflow用户

发布于 2019-04-04 18:26:01

尽管其他一些地方声称,这个可以完成。但是你需要做两件事。首先,您需要在较低的值上进行注释。然后,您需要告诉静态管理检查跳过_check_date_hierarchy检查。

这在实践中并不难,但你必须知道你在做什么。这是一个非常精简的版本。timeframe是DateTimeRangeField。只需注意您用作date_hierarchy值的内容对于数据库是有效的,否则它会一直爆炸。

代码语言:javascript
复制
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')
        )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46471981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档