django

2011-12-19 8 views
7

में वैश्विक formfield_overriding मेरे पास कस्टम टेक्स्टफील्ड विजेट और मेरे प्रोजेक्ट में कई रूप हैं। हर admin.ModelAdmin रूप मेंdjango

formfield_overrides = { 
    TextField: {'widget': CustomTextFieldWidget}, 
} 

, और कहा कि सिर्फ बदसूरत है: इस कस्टम विजेट मैं लिखने के लिए की जरूरत का उपयोग करें।

क्या इसे एक बार लिखने और परियोजना में सभी रूपों में कस्टम विजेट का उपयोग करने का कोई तरीका है?

उत्तर

7

नहीं, पूरे परियोजना में फॉर्मफील्ड विजेट को ओवरराइड करने के लिए कोई हुक नहीं है।

आप अपने सभी मॉडल व्यवस्थापक वर्ग admin.ModelAdmin के उप-वर्ग से प्राप्त कर सकते हैं, तो आपको केवल formfield_overrides सेट करना होगा।

class MyModelAdmin(admin.ModelAdmin): 
    """ 
    This is the parent class that all model 
    admins in the project inherit from 
    """ 
    formfield_overrides = { 
     TextField: {'widget': CustomTextFieldWidget}, 
    } 

class AppleAdmin(MyModelAdmin): 
    ... 

class BananaAdmin(MyModelAdmin): 
    ... 

#etc