2011-12-19 14 views
7

Projemde özel textfield widget'ım ve birçok form var. Her admin.ModelAdmin şeklindedjango içinde global formfield_overriding

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

, ve bu sadece çirkin i yazmaya gerek bu özel bir widget kullanın.

Sadece bir kez yazmak ve projedeki tüm formlarda özel pencere aracını kullanmak için bir yol var mı?

cevap

7

Hayır, tüm proje boyunca form alanı widget'larını geçersiz kılacak kanca yoktur.

Model yönetici sınıflarınızın tümünü admin.ModelAdmin alt sınıfından alabilirdiniz, daha sonra yalnızca bir kez formfield_overrides ayarlamalısınız.

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 
İlgili konular