2015-11-03 5 views
7

मैं अपने Django मॉडल पर json क्षेत्र का उपयोग कर रहा:Django ORM समूह

class JsonTable(models.Model): 
    data = JSONField() 
    type = models.IntegerField() 

मैं अगले क्वेरी, जो सामान्य एसक्यूएल क्षेत्रों के लिए काम करता है की कोशिश की:

JsonTable.objects.filter(type=1).values('type').annotate(Avg('data__superkey')) 

लेकिन Django ORM या कुछ pyth का उपयोग कर

FieldError: Cannot resolve keyword 'superkey' into field. Join on 'data' not permitted. 

वहाँ json कुंजी पर से समूह बनाने के लिए रास्ता नहीं है,: यह अगले त्रुटि फेंकता कच्चे वर्ग के उपयोग के बिना, lib पर?

संस्करण: Django 1.9b, PostgreSQL 9,4

अद्यतन

उदाहरण 2:

JsonTable.objects.filter(type=1).values('data__happykey').annotate(Avg('data_superkey')) 

happykey

उत्तर

0

पर एक ही त्रुटि फेंकता आप इस पैकेज https://github.com/bradjasper/django-jsonfield उपयोग कर रहे हैं , वहां नहीं है ऐसे अनुरूपित संबंधित प्रश्नों के प्रबंधन के लिए कोड में आईएनजी (data__some_json_key) जैसा कि जेसन डेटा टेक्स्ट है, आपको कच्चे वर्ग या बेहतर पर जाना होगा: क्वेरीसेट extra() विधि का उपयोग करें, लेकिन एसएसएल में जेसन को पार्स करना मुश्किल लगता है।

संबंधित मुद्दे