2013-04-20 7 views
10

django व्यवस्थापक के मॉडल-सूची पृष्ठ में प्रदर्शित कॉलम को गतिशील रूप से बदलने की कोशिश में, मैंने अनुमतियों के आधार पर list_display विशेषता से किसी विशेष फ़ील्ड को गतिशील रूप से जोड़ने या निकालने के लिए अपने मॉडलएडमिन क्लास की __init__() विधि को ओवरराइड करने का प्रयास किया वर्तमान उपयोगकर्ता का। हालांकि, मैंने पाया कि मॉडलएडमिन कक्षाएं केवल पुनरारंभ करने के बाद ही तत्काल होती हैं, इसलिए यह काम नहीं करती है ...मैं django ModelAdmin क्लास की "list_display" विशेषता को गतिशील रूप से कैसे निर्दिष्ट कर सकता हूं?

क्या सूची_डिस्प्ले फ़ील्ड को गतिशील रूप से बदलने का कोई और तरीका है?

उत्तर

16

हालांकि यह सवाल पूछने, मैं इस सवाल का जवाब भर में ठोकर खाई है, तो मैंने सोचा कि मैं हिस्सा हूँ ...

टिकट #14206 इंगित करता है कि इस सुविधा कुछ समय पहले django में जोड़ा गया था (संस्करण 1.4, मैं belive)। ModelAdmin कक्षाएं अब get_list_display() विधि का समर्थन करती हैं:

def get_list_display(self, request): 
    if request.user.has_perm('my_app.my_permission'): 
     list_display = ('field_1', 'field_2', 'dynamic_field',) 
    else: 
     list_display = ('field_1', 'field_2',) 
    return list_display 
संबंधित मुद्दे