मुझे यकीन नहीं है कि मेरी खोज, यहां बताया गया है कि, निविदा के लिए पूरी तरह मददगार होगा क्योंकि, अन्य चीजों के साथ, मुझे नहीं पता कि वह न केवल दो व्यवस्थापक साइटों बल्कि दो डेटाबेस भी बोल रहा था, प्रत्येक के लिए एक। यह मेरी स्थिति है। मुझे उज्ज्वल विचार आया कि मैं अपने ऐप्स में से एक चाहता था, एक नया ऐप, अपने डेटाबेस और अपने व्यवस्थापक पृष्ठों के लिए।
लेकिन मैं बर्नार्ड वल्लंत के AdminSite उप-वर्गीकरण दृष्टिकोण के साथ एक समस्या में भाग गया, हालांकि ऐसा लगता है कि यह रूढ़िवादी और अनिवार्य रूप से सही काम है। मैंने समस्या का समाधान किया।
यहाँ है कि मैं पूरी तरह से आवश्यक हो पाया बर्नहार्ड Vallant के कोड में आधुनिक है:
from django.contrib.admin.sites import AdminSite
class MyAdminSite(AdminSite):
pass
#or overwrite some methods for different functionality
myadmin = MyAdminSite(name='anything')
हाँ, मैं वास्तव में name = 'कुछ भी' है कि आप जब तक चुनें (मतलब है के रूप में यह नहीं है 'व्यवस्थापक ')।और मैंने इसके साथ अंदर और बाहर टॉगल किया है और यह हर बार कुछ भी-लेकिन-व्यवस्थापक नाम असाइनमेंट के बिना विफल रहता है।
मेरे द्वारा प्राप्त किए गए लक्षण यह थे कि जब मैंने दूसरा डेटाबेस जोड़ा और इसके लिए एक मैडमिन बनाया और फिर myadmin.register (My_ModelA) के साथ मॉडल पंजीकृत किया, और दो व्यवस्थापक ऐप पृष्ठों को देखने के लिए चला गया, एक के लिए मेरा नया ऐप जो दूसरे डेटाबेस और मायाडमिन और मॉडल माईमोडाला का इस्तेमाल करता था ठीक दिखता था, लेकिन मेरे पुराने व्यवस्थापक पृष्ठ ने अपने मॉडल के लिए मृत लिंक दिखाए और जब मैंने ऐप के लिए एक गैर-मृत लिंक पर क्लिक किया (पुराना ऐप जो पुराने का उपयोग करता है डेटाबेस) मुझे इस प्रभाव के लिए 404 कोड मिला कि पृष्ठ मौजूद नहीं था।
इसके अलावा, मैं नहीं जानता कि यह मायने रखता है, लेकिन मैं क्या बर्नहार्ड Vallant परियोजना urlconf में किया था से कुछ अलग किया:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include('mynewapp.urls')),
url(r'^someword/admin/', include(admin.site.urls)),
)
ठीक है, "someword" के लिए अप्रासंगिक है --- वहाँ अंतिम उपयोगकर्ता के संबंध में उपस्थिति और ऐप या प्रोजेक्ट का नाम नहीं। लेकिन संबंधित व्यवस्थापक मेरे पुराने ऐप और पुराने डेटाबेस के लिए एक है। Autodiscover() समावेशन नोट करें। दस्तावेज़ों में कुछ गड़बड़ भाषा है, जिसमें बर्नहार्ड वलंत ने इसके उपयोग के संबंध में लिंक किया था जब प्रोजेक्ट urlconf को कॉन्फ़िगर किया गया है क्योंकि बर्नार्ड वलंत के पास इसे मैडमिन आयात के साथ ही डिफ़ॉल्ट व्यवस्थापक के संदर्भ में भी है।
और mynewapp के लिए urlconf के लिए मेरे पास है:
from django.conf.urls import patterns, url, include
from myproject.admin import myadmin
urlpatterns = patterns('',
url(r'/', include(myadmin.urls))
)
urlpatterns += patterns('mynewapp.views',"... url() stuff for mynewapp's views"),
)
होते हुए भी 'व्यवस्थापक' के अलावा कुछ करने के लिए आंतरिक रूप से अपने AdminSite उदाहरण के नामकरण के बिल्कुल आवश्यकता है, मैं यह है कि जब यह जाज अप करने के लिए समय आ गया जोड़ना होगा mynewapp की admin.py फ़ाइल कुछ व्यवस्थापक के साथ। मॉडल एडमिन सबक्लासिंग, वास्तव में व्यवस्थापक का उपयोग करना आवश्यक था। मॉडेलएडमिन अभिभावक वर्ग के रूप में। myadmin AdminSite के उप-वर्ग के सभी उदाहरण के बाद है। जैसे कि मैं इकट्ठा करता हूं कि यह admin.site के बराबर है, व्यवस्थापक के साथ नहीं।
यह मेरे जैसे एनओयूबी के लिए बहुत भ्रमित है क्योंकि व्यवस्थापक, निचले मामले के साथ, एक उदाहरण की तरह दिखता है, और मैं सबक्लासिंग उदाहरणों से अपरिचित हूं। तो मुझे लगता है कि यह नहीं है।
के लिए त्वरित उदाहरण जब मैं इसे करने का प्रयास करता हूं, तो लॉग इन करने के बाद, मुझे "आपको कुछ भी संपादित करने की अनुमति नहीं है।" संदेश ... – kender
आपके द्वारा उपयोग किए जाने वाले उपयोगकर्ता में is_staff होना चाहिए और is_superuser फ़ील्ड सत्य पर सेट होनी चाहिए। फिर विभिन्न व्यवस्थापक उपयोगकर्ताओं के बीच अंतर करने के बाद और उनके पास http://docs.djangoproject.com/en/1.2/topics/auth/#permissions –
देखने के लिए क्या पहुंच है, ठीक है, मुझे यह काम करने के लिए मिला। लेकिन मुझे 2 व्यवस्थापक साइटों के लिए टेम्पलेट्स का एक अलग सेट नहीं दिख रहा है - वे दोनों टेम्पलेट्स में 'व्यवस्थापक /' निर्देशिका देखते हैं, यहां तक कि एक को 'बैकऑफिस' तर्क के साथ बनाया गया है, जिसे अपना नाम 'बैकऑफिस' पर सेट करना चाहिए '... – kender