代码之家  ›  专栏  ›  技术社区  ›  Michaela Ervin

django filter postgres json字段变量未定义

  •  0
  • Michaela Ervin  · 技术社区  · 7 年前

    未定义名称“snapshot\uu 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\uu json键。我做错了什么?

    1 回复  |  直到 7 年前
        1
  •  0
  •   alfonso.kim    7 年前

    timestamp 是快照字段。使用:

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

    Django documentation