खोज…


वाक्य - विन्यास

  • JSONField (** विकल्प)

टिप्पणियों

  • Django के JSONField वास्तव में Postgres JSONB कॉलम में डेटा संग्रहीत किया है, जो केवल Postgres 9.4 और बाद में उपलब्ध है।

  • जब आप अधिक लचीला स्कीमा चाहते हैं तो JSONField बहुत अच्छा है। उदाहरण के लिए यदि आप कोई डेटा माइग्रेशन किए बिना चाबियों को बदलना चाहते हैं, या यदि आपकी सभी वस्तुओं में समान संरचना नहीं है।

  • यदि आप स्थैतिक कुंजी के साथ डेटा संग्रहीत कर रहे हैं, तो JSONField s के बजाय कई सामान्य फ़ील्ड का उपयोग करने पर विचार करें, क्योंकि JSONField को क्वेरी JSONField कभी-कभी काफी थकाऊ हो सकता है।

ज्वलंत प्रश्न

आप एक साथ प्रश्नों की श्रृंखला बना सकते हैं। उदाहरण के लिए, यदि कोई शब्द सूची के अंदर मौजूद है, तो दो अंडरस्कोर और अपनी शब्दकोश क्वेरी जोड़ें।

डबल अंडरस्कोर वाले प्रश्नों को अलग करना न भूलें।

एक JSONField बनाना

Django 1.9+ में उपलब्ध है

from django.contrib.postgres.fields import JSONField
from django.db import models

class IceCream(models.Model):
    metadata = JSONField()

आप चाहें तो सामान्य **options जोड़ सकते हैं।

! ध्यान दें कि आपको अपनी settings.py में INSTALLED_APPS में 'django.contrib.postgres' डालना होगा

एक JSONField में डेटा के साथ एक ऑब्जेक्ट बनाना

देशी पायथन फॉर्म में डेटा पास करें, उदाहरण के लिए list , dict , str , None , bool आदि।

IceCream.objects.create(metadata={
    'date': '1/1/2016',
    'ordered by': 'Jon Skeet',
    'buyer': {
         'favorite flavor': 'vanilla',
         'known for': ['his rep on SO', 'writing a book']
     },
    'special requests': ['hot sauce'],
})

व्यवहार में JSONField का उपयोग करने के बारे में "रिमार्क्स" अनुभाग में नोट देखें।

शीर्ष स्तर के डेटा को छोड़ना

IceCream.objects.filter(metadata__ordered_by='Guido Van Rossum')

क्वेरीज़ डेटा को शब्दकोशों में निहित किया गया है

सभी आइसक्रीम कोन प्राप्त करें जो चॉकलेट पसंद करने वाले लोगों द्वारा ऑर्डर किए गए थे:

IceCream.objects.filter(metadata__buyer__favorite_flavor='chocolate')

क्वेरीज़ का पीछा करने के बारे में "रिमार्क्स" अनुभाग में नोट देखें।

सरणियों में मौजूद डेटा का क्वेरी करना

एक पूर्णांक को एक इंडेक्स लुकअप के रूप में व्याख्या किया जाएगा।

IceCream.objects.filter(metadata__buyer__known_for__0='creating stack overflow')

क्वेरीज़ का पीछा करने के बारे में "रिमार्क्स" अनुभाग में नोट देखें।

JSONField मानों द्वारा ऑर्डर करना

सीधे JSONField पर JSONField करना अभी तक Django में समर्थित नहीं है। लेकिन रॉसन के माध्यम से संभव है कि jsonb के लिए PostgreSQL फ़ंक्शन का उपयोग कर:

from django.db.models.expressions import RawSQL
RatebookDataEntry.objects.all().order_by(RawSQL("data->>%s", ("json_objects_key",)))

data['json_objects_key'] द्वारा यह उदाहरण आदेश data['json_objects_key'] JSONField नाम के अंदर data :

data = JSONField()


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow