2017-07-02 33 views
0

我是新来使用Django和postgres JSONFields。使用Django 1.11.1 以下视图报告一个django筛选器postgres json字段变量未定义

名 '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键。我究竟做错了什么?

回答

0

timestamp是快照领域。使用:

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

检查Django documentation关于字段查找。

+0

我还是'name'timestamp'未定义' –

+0

如果我删除了'>'和'<'符号,它与'snapshot__timestamp'一起使用。我错过了跆拳道吗? –

+0

我怎么没有看到。请检查我编辑的答案 –