2009-08-02 12 views
8

क्या Django व्यवस्थापक साइट पर "जोड़ें" कार्यक्षमता को हटाने का कोई तरीका है? कुछ संस्थाओं के लिए, मैं केवल Django व्यवस्थापक को उन्हें देखने या मौजूदा लोगों को बदलने में सक्षम होना चाहता हूं, लेकिन नए नहीं जोड़ना चाहता हूं।Django व्यवस्थापक में "जोड़ें" कार्यक्षमता को हटाएं

उत्तर

3

ज़रूर, आप निर्देशों का पालन करते हुए here बहुत बारीकी से व्यवस्थापक अनुकूलित कर सकते हैं - मुझे विश्वास है कि क्या आप अपने खुद के ModelAdmin उपवर्ग में ModelAdmin.save_model(self, request, obj, form, change) अधिभावी, कुछ भी नहीं सुनिश्चित करने के लिए से हिस्से में प्राप्त किया जा सकता चाहते हैं की दुकान पर होता है जब change गलत है (यानी परिवर्तन के बजाय जोड़ने का प्रयास), और "दृश्य जोड़ें" प्रदर्शित करने के लिए ModelAdmin.add_view(self, request, form_url='', extra_context=None) को ओवरराइड करके भाग में यह व्यवस्थापक को यह स्पष्ट करता है कि उन्हें इस मार्ग के माध्यम से ऑब्जेक्ट जोड़ने की अनुमति नहीं दी जाएगी। मैंने वास्तव में आपको आवश्यक विशिष्ट व्यवस्थापक अनुकूलन नहीं किया है, लेकिन मैंने दूसरों को किया है और वे बहुत आसानी से काम करने लगते हैं!

+0

जवाब के लिए धन्यवाद। मैं एक सेटिंग की उम्मीद कर रहा था जो इसे पूरा करेगा, जिस तरह से save_as ModelAdmin प्रॉपर्टी काम करता है। –

+0

मुझे स्टॉक Django 1.0 में ऐसी सेटिंग्स से अवगत नहीं है, लेकिन हो सकता है कि कुछ> 1.0 और/या इसे आपूर्ति करने के लिए contrib हैक - स्टॉक 1.0.s कुछ ऐसा है जो मैंने अभी तक अटक गया है (ज्यादातर क्योंकि यह ठीक चल रहा है ऐप इंजन, मैं कबूल करता हूं ;-)। –

+1

यह उत्तर चीजों को कम करता है। उपयोगकर्ताओं को हटाएं अनुमति जोड़ें आपके द्वारा वर्णित स्थिति के लिए पूरी तरह से चाल है। (यह माना जाता है कि आपको केवल प्रति मॉडल को नियंत्रित करने की आवश्यकता है, प्रति उदाहरण नहीं।) –

3

आप व्यवस्थापक इंटरफ़ेस के भीतर से प्रत्येक उपयोगकर्ता समूह के लिए अनुमति को कस्टमाइज़ कर सकते हैं: /admin/auth/group पर जाने का प्रयास करें और यह वहां से सीधा होना चाहिए।

यह पहले के उत्तर द्वारा प्रदान किए गए समाधान के रूप में दानेदार नहीं होगा, लेकिन यह व्यवस्थापक को कस्टमाइज़ करने की आवश्यकता के बिना आपकी अधिकांश आवश्यकताओं का ख्याल रखेगा।

+2

लेकिन चूंकि ओपी विशेष रूप से कुछ चीजों को करने से * व्यवस्थापक * को अवरुद्ध करना चाहता है, क्योंकि सवाल स्पष्ट रूप से बताता है कि वह अनुमति परिवर्तन को पूर्ववत करने से व्यवस्थापक को कैसे अवरुद्ध कर रहा है (esp। अगर वह व्यवस्थापक को अनुमति देना चाहता है कुछ प्रशासन करने के लिए ;-)? –

+0

@Alex: यह सच है - मेरा मतलब आपकी प्रतिक्रिया के लिए एक आसान विकल्प के रूप में मेरी प्रतिक्रिया थी, लेकिन सादगी पाठ्यक्रम की सीमाओं के साथ आता है। – anschauung

2

यदि आप एक्सेस प्रतिबंधित करने के लिए अनुमतियां बदलते हैं तो आपको अभी भी एक एफके/एमटीएम क्षेत्र द्वारा प्लस साइन प्राप्त होगा। उस पर क्लिक करने से इसमें 'अनुमति अस्वीकृत' वाली पॉपअप विंडो खुल जाएगी।

आप वास्तव में व्यवस्थापक के साथ मॉडल को पंजीकृत न करने के द्वारा प्लस साइन को पूरी तरह हटा सकते हैं।

मेरे पास ऐसी स्थिति है जहां मैंने पूर्वनिर्धारित श्रेणियां हैं जिन्हें मैं चाहता हूं कि उपयोगकर्ता एक से अधिक का चयन कर सकें। ऐसा करने का सबसे अच्छा तरीका एक मॉडल के साथ है। कई सारे क्षेत्र। आप व्यवस्थापक के साथ मॉडल पंजीकृत कर सकते हैं, आवश्यकतानुसार डेटा दर्ज करें और फिर पंजीकरण को हटा दें।

1

उस विशेष इनलाइन के लिए max_num=0 सेट करना एक आसान प्रभावी तरीका है।

0

अधिकतम_नम = 0 सेट करने के सत्य का सुझाव पूरी तरह से काम करता है।

प्रति ModelForm वर्ग पर Django डॉक्स

:

जावास्क्रिप्ट सक्षम ब्राउज़र का साथ उपयोगकर्ताओं के लिए एक लिंक अतिरिक्त inlines के किसी भी संख्या को सक्षम करने के प्रदान की जाती है "एक और जोड़ें" के अतिरिक्त जोड़े जाने के लिए उपलब्ध कराई गई अतिरिक्त तर्क के परिणामस्वरूप।

गतिशील लिंक तब दिखाई नहीं देगा यदि वर्तमान में प्रदर्शित रूपों की संख्या max_num से अधिक है, या यदि उपयोगकर्ता के पास जावास्क्रिप्ट सक्षम नहीं है।

और

नियमित formsets साथ के रूप में, आप प्रदर्शित अतिरिक्त रूपों की संख्या को सीमित करने के लिए modelformset_factory MAX_NUM और अतिरिक्त पैरामीटर का उपयोग कर सकते हैं।

MAX_NUM से मौजूदा वस्तुओं को नहीं रोकता है प्रदर्शित किया जा रहा