2013-02-09 16 views
6

मैं प्रदान की गई उपयोगकर्ता पर आधारित पेज वस्तुओं के लिए व्यवस्थापक क्वेरीसमूह फिल्टर करने के लिए एक रास्ता खोजने के लिए कोशिश कर रहा हूँ के आधार पर feincms पेज व्यवस्थापक को अनुकूलित करना, क्या मैं (छद्म कोड) पर विचार किया है:उपयोगकर्ता

from feincms... Page 

class MyPageAdmin(PageAdmin): 
    def __init__(self, *args, **kwargs): 
     'monkey business' 
     super(MyPageAdmin, self).__init__(*args, **kwargs) 

admin.site.unregister(Page) 
admin.site.register(Page, MyPageAdmin) 

यह काम नहीं करेगा क्योंकि feincms पूरी तरह से लोड django उदाहरण के लिए जाँच करता है। एक वर्बोज़ समाधान शायद सब पर पेज मॉड्यूल लोड करने के लिए नहीं, और या तो पेज मॉडल वस्तु या व्यवस्थापक, जैसे ओवरराइड होगा:

from feincms... PageAdmin 

class MyPage(Page): 
    objects = CustomManager() 

admin.site.register(MyPage, PageAdmin) 

प्रलेखन यह एक समान तरीके से setup your own page module के लिए संभव है में कहा गया है, लेकिन ऐसा लगता है एक साधारण आवश्यकता के लिए बहुत सी विन्यास।

क्या व्यवस्थापक क्वेरीसेट या फीनक्स मॉड्यूल के लिए मॉडल व्यवस्थापक को ओवरराइड करने का कोई आसान तरीका है?

+0

(http://stackoverflow.com/a/1659129/630877) मानक 'PageAdmin' काम के [क्वेरीसमूह विधि] अधिभावी नहीं करना चाहिए? – arie

+0

@री, हाँ, लेकिन परंपरागत तरीके से नहीं, मैंने बस यह पता लगाया कि उन्हें सही तरीके से कैसे पैच करना है। –

उत्तर

6

FeinCMS v1.7 भी आप अपने Django सेटिंग्स में FEINCMS_USE_PAGE_ADMIN=False स्थापित करने के लिए अनुमति देता है।

फिर, बस के रूप में आप सामान्य PageAdmin उपवर्ग, और रजिस्टर मॉडल खुद के साथ मॉडल व्यवस्थापक।

यदि आप v1.7 का उपयोग कर रहे हैं तो आपको feincms.module.page.modeladmins से PageAdmin आयात करना भी शुरू करना चाहिए।

3

चाल यहाँ आप कुछ प्रदर्शन जादू की वजह से feincms मॉड्यूल का पंजीकरण रद्द नहीं कर सकते हैं। अपनी खुद की feincms पृष्ठ वस्तु के पंजीकरण की बजाय, आप इस तरह के तरीकों पैच कर सकते हैं:

from django.conf import settings 
from feincms.module.page.models import PageAdmin 

def queryset(self, request): 
    qs = super(PageAdmin, self).queryset(request) 
    if request.user.is_superuser: 
     return qs 
    return qs.filter(site__id__exact=settings.SITE_ID) 
PageAdmin.queryset = queryset 
संबंधित मुद्दे