2016-01-18 5 views
7

मैं Django 1.8.8 का उपयोग कर रहा हूं।Django व्यवस्थापक: मॉडलों की सूची दिखाएं

class MainModel(models.Model): 
    value = models.IntegerField(null=False, editable=True, default=20) 
    dt_modified = models.DateTimeField(null=True, auto_now=True) 

class MyModel1(MainModel, models.Model): 
    name = models.CharField(null=False, editable=False, max_length=50) 

class MyModel2(MainModel, models.Model): 
    foo = models.CharField(null=False, editable=False, max_length=50) 

मेरे व्यवस्थापक पृष्ठ वर्तमान में इस तरह के रूप सेटअप है,

class MyModelAdmin(admin.ModelAdmin): 
    list_display = ('value', 'dt_modified') 
    search_fields = ['value'] 
    date_hierarchy = 'dt_modified' 

models = [MyModel1, MyModel2] 
admin.site.register(models, MyModelAdmin) 

मैं सेटअप करने के लिए मेरी व्यवस्थापक पृष्ठ चाहते हैं इस प्रकार है:: एक है

मैं इस तरह के रूप में परिभाषित किया गया मॉडल का एक बहुत कुछ है शीर्ष पृष्ठ /admin पर लिंक करें, "मेनमोडल्स" जो मुझे दूसरे पृष्ठ पर निर्देशित करता है जहां मैं MyModel, यानी [MyModel1, MyModel2, ....MyMoneyN] के सभी व्युत्पन्न मॉडल की सूची से चयन कर सकता हूं जो मुझे चयनित व्युत्पन्न मॉडल को संपादित करने देता है। MyModel#

उपरोक्त कोड के साथ समस्या यह है कि यह प्रत्येक क्रमांकित मॉडल के लिए शीर्ष स्तर का लिंक बनाता है। अपने

class MyChangeList(ChangeList): 
    def url_for_result(self, result): 
     link = your_function_to_create_link() 
     return link 

तब का उपयोग ModelAdmin में Changelist:

उत्तर

1

आप यह करने के लिए अपने स्वयं के परिवर्तन सूची की जरूरत

class MyModelAdmin(admin.ModelAdmin): 
    def get_changelist(self, request, **kwargs): 
     return MyChangeList 
+0

क्या 'your_function_to_create_link()' में जाना होगा के साथ क्या करना चाहते हैं उसके पास कुछ का एक उदाहरण है? – pyCthon

+1

यह इस बात पर निर्भर करता है कि आप क्या करना चाहते हैं। मुझे लगता है कि आप Django व्यवस्थापक का उपयोग कर रहे हैं और आप मॉडल ऑब्जेक्ट को प्राप्त करने के लिए एक लिंक चाहते हैं। उस स्थिति में यह कुछ ऐसा हो सकता है: 'रिवर्स ("व्यवस्थापक:% s_% s_change"% (result._meta.app_label, result._meta.model_name)) '। यह प्रत्येक ऑब्जेक्ट चेंज व्यू के लिए एक सही यूआरएल बनाएगा। 'परिणाम' यहां आपकी वस्तु है। –

+0

मैंने परिवर्तन किए और जब मैं दौड़ता हूं, 'makemigrations' यह कहता है कि कोई परिवर्तन नहीं मिला है। – pyCthon

1

आप वास्तव में Grapelli की तरह कुछ या किसी अन्य कस्टम व्यवस्थापक प्रतिस्थापन का उपयोग कर बंद सबसे अच्छा कर रहे हैं। आप मॉडलों के विभिन्न सेटों के साथ कस्टम पेज सेट कर सकते हैं, डिफ़ॉल्ट रूप से छुपा/दिखाया जा सकता है आदि। वेनिला व्यवस्थापक के साथ ऐसा करने की कोशिश करना समस्याग्रस्त हो रहा है।

यहाँ तुम क्या grappelli

from django.core.urlresolvers import reverse 
from django.utils.translation import ugettext_lazy as _ 
from grappelli.dashboard import modules, Dashboard 

class MyDashboard(Dashboard): 
    def __init__(self, **kwargs): 
     Dashboard.__init__(self, **kwargs) 

     # append an app list module for "Applications" 
     self.children.append(modules.AppList(
      title=_('Applications'), 
      column=1, 
      css_classes=('grp-collapse grp-closed',), 
      collapsible=True, 
      exclude=('django.contrib.*',), 
     )) 
+0

क्या आप एक उदाहरण प्रदान कर सकते हैं? – pyCthon

+1

[ग्रैपेली] (http://django-grappelli.readthedocs.org/en/latest/dashboard_setup.html) या [django-suit] (http://django-suit.readthedocs.org/en पर एक नज़र डालें /develop/configuration.html#id1) उदाहरणों के लिए दस्तावेज। लेकिन एक सामान्य स्तर पर, आपको यह विचार करना चाहिए कि आप उपयोग के लिए व्यवस्थापक अनुप्रयोगों का उपयोग क्यों करना चाहते हैं जिसमें [सामान्य विचार] (https://docs.djangoproject.com/en/1.8/topics/class-based-views/ जेनेरिक-एडिटिंग /) [मॉडलफॉर्म] के साथ (https://docs.djangoproject.com/en/1.8/topics/forms/modelforms/) एकदम सही फिट प्रतीत होता है। – jnns

+1

एक अच्छा सुझाव/टिप्पणी ... लेकिन यह सवाल का जवाब नहीं है। – rnevius

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