2012-07-04 17 views
5

मैं Django में अनुमतियों के लिए जुड़नार बना रहा हूँ। मैं उन्हें जिस तरह से जरूरी तरीके से लोड करने में सक्षम हूं। हालांकि, मेरा सवाल है ... मैं तालिका auth_group_permissions तालिका के लिए एक स्थिरता लोड करना चाहता हूं, मुझे group_id और permission_id निर्दिष्ट करने की आवश्यकता है, दुर्भाग्यवश जुड़नार इसे संभालने का सबसे अच्छा तरीका नहीं है। क्या प्रोग्रामेटिक रूप से ऐसा करने का कोई आसान तरीका है? ताकि मैं विशेष मूल्यों के लिए id प्राप्त कर सकूं और उन्हें भर दूं? यह सामान्य रूप से कैसे किया जाता है?अनुमतियों के लिए Django जुड़नार

उत्तर

8

उचित समाधान फ्रेमवर्क स्वयं ही करता है उसी तरह अनुमतियों को बनाना है।

आपको मॉड्यूल management.py या management/__init__.py में अंतर्निहित post_syncdb सिग्नल से कनेक्ट होना चाहिए और वहां अनुमतियां बनाना चाहिए। दस्तावेज़ीकरण में कहा गया है कि post_syncdb सिग्नल के जवाब में किए गए किसी भी काम को किसी भी डेटाबेस बदलाव नहीं करना चाहिए, लेकिन आपको यह भी ध्यान रखना चाहिए कि ढांचा स्वयं ही इस सिग्नल के जवाब में अनुमतियां बनाता है।

तो मैं सुझाव दूंगा कि आप django.contrib.auth एप्लिकेशन के management module पर एक नज़र डालें, यह देखने के लिए कि यह कैसे किया जाना चाहिए।

3

कम से कम Django> = 1.7 के रूप में, स्वीकार्य उत्तर अब "प्राकृतिक कुंजी" के परिचय के कारण सही जवाब नहीं है क्योंकि एक क्रमिकरण विकल्प के रूप में।

आप .. Django serialization documentation

प्रलेखन स्पष्ट रूप से प्राकृतिक कुंजी जा रहा है जब के लिए उपयोग के मामले का उल्लेख में प्राकृतिक कुंजी के बारे में अधिक पढ़ सकते हैं

... वस्तुओं स्वचालित रूप से डेटाबेस के दौरान Django द्वारा बनाई गई हैं सिंक्रनाइज़ेशन प्रक्रिया, किसी दिए गए रिश्ते की प्राथमिक कुंजी भविष्यवाणी करना आसान नहीं है; यह इस बात पर निर्भर करेगा कि माइग्रेट कैसे और कब निष्पादित किया गया था। यह उन सभी मॉडलों के लिए सच है जो स्वचालित रूप से ऑब्जेक्ट उत्पन्न करते हैं, विशेष रूप से अनुमति, समूह और उपयोगकर्ता सहित।

python manage.py dumpdata auth --natural-foreign --natural-primary -e auth.Permission

auth_permissions तालिका स्पष्ट रूप से -e ध्वज के साथ बाहर रखा जाना चाहिए के रूप में है कि तालिका आबादी है:

अपने विशिष्ट प्रश्न के लिए

तो, auth_group_permissions के बारे में, तो निम्न सिंटैक्स का उपयोग कर अपने दृढ़ डंप होगा migrate कमांड द्वारा और पहले से ही जुड़नार लोड करने से पहले डेटा होगा।

यह स्थिरता तब भी लोड की जाएगी जैसे किसी अन्य फिक्स्चर

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