2017-07-02 92 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

我怎麼沒有看到。請檢查我編輯的答案 –