2010-11-28 20 views
21

मैं एक django क्वेरी करने की कोशिश कर रहा हूं, लेकिन कई अलग-अलग WHERE पैरामीटर की संभावना के साथ। इसलिए मैं की तरह कुछ करने का सोच रहा था:एक स्ट्रिंग का उपयोग एक Django फ़िल्टर क्वेरी के लिए तर्क के रूप में

querystring = "subcat__id__in=[1,3,5]" 
Listing.objects.filter(querystring) 

यहाँ लिस्टिंग अपने मॉडल में परिभाषित किया गया है, और इसमें कई-से-अनेक क्षेत्र "subcat"। हालांकि, यह ValueError उठाता है क्योंकि फ़िल्टर स्ट्रिंग को इसके तर्क के रूप में स्वीकार नहीं करता है। क्या पाइथन में स्ट्रिंग के बजाए इसकी सामग्री के रूप में स्ट्रिंग का मूल्यांकन करने का कोई तरीका है? एक प्रिंट स्टेटमेंट की तरह कुछ जो मानक आउटपुट की बजाय स्ट्रिंग इनलाइन के मान को प्रिंट करता है।

वैसे, कारण मैं सिर्फ

querystring = [1,3,5] 
Listing.objects.filter(subcat__id__in=querystring) 

ऐसा नहीं करते हैं कि मैं हमेशा subcat__id के लिए नहीं कर रहा हूँ छानने, कभी कभी यह एक या कई अन्य पैरामीटर है, और मैं नहीं बल्कि करने की जरूरत नहीं होता है बयान के आधार पर नियंत्रित अलग-अलग प्रश्नों का एक गुच्छा लिखें। किसी भी सलाह की बहुत प्रशंसा की जाएगी।

उत्तर

52

शायद ...

filter_dict = {'subcat__id__in': [1,3,5]} 
Listing.objects.filter(**filter_dict) 
+0

बिल्कुल सही, कि वास्तव में मैं क्या देख रहा था है! बहुत बहुत धन्यवाद। – danny

+0

@ डैनी स्वीकृत उत्तर तो? = P –

9
Listing.objects.filter(**{"subcat__id__in": ast.literal_eval("[1,3,5]")}) 
संबंधित मुद्दे