2011-11-02 11 views
6

Django का ORM फिल्टर-आधारित संचालन के लिए .using() फ़ंक्शन के माध्यम से किसी विशिष्ट डेटाबेस (जब आपके प्रोजेक्ट में एकाधिक परिभाषित किया जाता है) से पूछताछ का समर्थन करता है।कई डेटाबेस के साथ Django ORM get_or_create का उपयोग

उदा MyModel.objects.filter(name='Bob').using('my_non_default_database')

क्लास MyModel() या get_or_create() जैसे शॉर्टकट के माध्यम से नए रिकॉर्ड बनाने के दौरान आप समकक्ष कैसे करेंगे?

उत्तर

10

usingMyModel.objects प्रबंधक पर एक विधि, आप एक MyModel उदाहरण है, तो आप को बचाने के लिए डेटाबेस निर्दिष्ट करने के लिए कीवर्ड का उपयोग का उपयोग कर सकते है ताकि आप

MyModel.objects.using('my_non_default_database').get_or_create(name="Bob") 

कर सकते हैं। django docs कुछ गॉथस बताते हैं।

my_model = MyModel(name="Bob") 
my_model.save(using='my_non_default_database') 
+0

यह नियमित मॉडल निर्माण के लिए कैसे संभाला जाता है? जैसे MyModel (name = 'bob') – Cerin

+1

सेविंग में एक कीवर्ड तर्क 'उपयोग' है। मैंने अपना जवाब अपडेट कर लिया है। – Alasdair

4

using मानक क्वेरी श्रृंखला का सिर्फ एक हिस्सा है। इसलिए, आप डीबी को क्वेरी भेजने से पहले कहीं भी इसका उपयोग कर सकते हैं। get_or_create, filter के विपरीत, परमाणु है: जब आप इसे कॉल करते हैं, तो यह तुरंत बात करता है, इसलिए आपको इसके पहले using पर कॉल करने की आवश्यकता है।

MyModel.objects.using('my_non_default_database').get_or_create(name='Bob') 
संबंधित मुद्दे