2012-03-22 15 views
9

मैं एक कस्टम व्यवस्थापक सामान लिख रहा हूं और व्यवस्थापक में सभी पंजीकृत मॉडल प्राप्त करने की आवश्यकता है। क्या यह संभव है? मुझे व्यवस्थापक सूचकांक पृष्ठ पर कुछ कस्टम दृश्य बनाने की आवश्यकता है।Django व्यवस्थापक - templatetag में सभी पंजीकृत मॉडल कैसे प्राप्त करें?

उत्तर

14

आप मॉडल की admin.site._registry dict उपयोग कर सकते हैं> ModelAdmin:

>>> ./manage.py shell 

In [1]: from urls import * # load admin 

In [2]: from django.contrib import admin 

In [3]: admin.site._registry 
Out[3]: 
{django.contrib.auth.models.Group: <django.contrib.auth.admin.GroupAdmin at 0x22629d0>, 
django.contrib.auth.models.User: <django.contrib.auth.admin.UserAdmin at 0x2262a10>, 
django.contrib.sites.models.Site: <django.contrib.sites.admin.SiteAdmin at 0x2262c90>, 
testapp.models.Up: <django.contrib.admin.options.ModelAdmin at 0x2269c10>, 
nashvegas.models.Migration: <nashvegas.admin.MigrationAdmin at 0x2262ad0>} 

यही तो व्यवस्थापक सूचकांक दृश्य करता है:

@never_cache 
def index(self, request, extra_context=None): 
    """ 
    Displays the main admin index page, which lists all of the installed 
    apps that have been registered in this site. 
    """ 
    app_dict = {} 
    user = request.user 
    for model, model_admin in self._registry.items(): 
     # ... 

ध्यान दें कि एक अंडरस्कोर के साथ उपसर्ग चर संभावित परिवर्तन के अधीन हैं django के भविष्य के संस्करणों में।

+0

क्या आपको पता है कि कोई ऐप है, वास्तविक ऐप प्राप्त करने के लिए जिसमें उपयोगकर्ता व्यवस्थापक है? यदि यह दासबोर्ड है तो यह कोई ऐप नहीं देता है, लेकिन दूसरों के लिए यह सभी लेबल या ऑब्जेक्ट देता है। मैं इसे अपने व्यवस्थापक वैश्विक मेनू में templatetag के रूप में उपयोग करना चाहता हूं। – tunarob

+0

मुझे समझ में नहीं आता, क्या आप एक और सवाल खोल सकते हैं और अधिक जानकारी दे सकते हैं? – jpic

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