【问题标题】:django filter postgres json field variable not defineddjango过滤postgres json字段变量未定义
【发布时间】:2017-12-06 03:30:49
【问题描述】:

我是使用 Django 和 postgres JSONFields 的新手。使用 Django 1.11.1 以下视图报告了一个

名称'snapshot__timestamp'未定义

型号:

class Snapshot(models.Model):
    id = PGUUIDField(primary_key=True)
    snapshot = JSONField(help_text=("Snapshot of config tree values"))

查看:

def get_queryset(self):
    if len(self.request.query_params) > 0:
        try:
            startdate = time.strptime(self.request.query_params.get('startdate', None),'%Y-%m-%d %H:%M:%S')
            enddate = time.strptime(self.request.query_params.get('enddate', None), '%Y-%m-%d %H:%M:%S')
            return Snapshot.objects.filter(Q(snapshot__timestamp>=startdate) & Q(snapshot__timestamp<=enddate))
        except Exception as e:
            print(e)
            logger.exception(e)  
            return Snapshot.objects.none()
    return Snapshot.objects.all()

示例 json 字段条目:

{"tree": {"asdf": "values"}, "pollgroup": [1, 3], "timestamp": "2017-7-2 00:00:00"}

我发现的所有示例都在查询中显示了 modelfield__json 键。我做错了什么?

【问题讨论】:

    标签: django django-rest-framework django-jsonfield


    【解决方案1】:

    timestamp 是快照的一个字段。使用:

    Snapshot.objects.filter(
        Q(timestamp__gte=startdate) & 
        Q(timestamp__lte=enddate)
    )
    

    检查Django documentation 了解字段查找。

    【讨论】:

    • 我仍然收到name 'timestamp' is not defined
    • 如果我删除 '>' 和 'snapshot__timestamp。我失踪了?
    • 我怎么没看到。请检查我编辑的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 2017-11-13
    • 2017-03-05
    • 2019-09-11
    • 2018-09-08
    • 2011-09-03
    • 1970-01-01
    相关资源
    最近更新 更多