की JSONField सूची फ़िल्टर मैं नए JSONField साथ Django 1.9 चलाने के लिए और अगले टेस्ट मॉडल है:Django dicts
[
{
"fixed_key_1": "foo1",
"fixed_key_2": {
"random_key_1": "bar1",
"random_key_2": "bar2",
}
},
{
"fixed_key_1": "foo2",
"fixed_key_2": {
"random_key_3": "bar2",
"random_key_4": "bar3",
}
}
]
मैं चाहता हूँ:
class Test(TimeStampedModel):
actions = JSONField()
चलो कहते हैं कि कार्रवाई JSONField इस तरह दिखता है चलो सूची के प्रत्येक आइटम के लिए foo1 और foo2 कुंजी फ़िल्टर करने में सक्षम हो। जब मैं कार्य करें:
>>> Test.objects.filter(actions__1__fixed_key_1="foo2")
टेस्ट क्वेरीसमूह में है। लेकिन जब मैं करता हूं:
>>> Test.objects.filter(actions__0__fixed_key_1="foo2")
यह नहीं है, जो समझ में आता है। मैं की तरह कुछ करना चाहता हूँ:
>>> Test.objects.filter(actions__values__fixed_key_1="foo2")
या
>>> Test.objects.filter(actions__values__fixed_key_2__values__contains="bar3")
और क्वेरीसमूह में टेस्ट की है।
कोई विचार अगर यह किया जा सकता है और कैसे?
मैं वास्तव में पहले से ही PostgreSQL के JSONField विशिष्ट मॉडल फ़ील्ड का उपयोग कर रहा हूं ('django.contrib.postgres.fields से आयात JSONField')।आपका समाधान तब काम करता है जब 'your_property' ज्ञात होता है (' fixed_key_1' और 'fixed_key_2' मेरे मामले में) लेकिन जब मैं' your_property' ('random_key_ #' को अपने मामले में नहीं जानता) तो मैं कैसे कर सकता हूं? – Scentle5S
आपको '{' fixed_key_1 ':' foo2 '}' अपने पैरामीटर बनाना चाहिए, मैंने जेनेरिक फ़ंक्शन के साथ कोड अपडेट किया है। – DhiaTN
बात यह है कि मैं विशेष रूप से 'your_property' नहीं जानता हूं। यह कुछ भी हो सकता है और मुझे इसके बारे में भी परवाह नहीं है, सिर्फ यह जानना है कि JSONField में गहराई के बावजूद, इसके किसी भी मूल्य में दी गई स्ट्रिंग है या नहीं। – Scentle5S