2009-01-11 16 views
10

Satır içi olmayanlar için bu kolaydır. Sadece admin.py AdminOptions içinde aşağıdakileri geçersiz:Django'ya özel bir satır içi yönetici widget'ı nasıl ekleyebilirim?

def formfield_for_dbfield(self, db_field, **kwargs): 
    if db_field.name == 'photo': 
     kwargs['widget'] = AdminImageWidget() 
     return db_field.formfield(**kwargs) 
    return super(NewsOptions,self).formfield_for_dbfield(db_field,**kwargs) 

Ben inline çalışmak için bu uyum nasıl çalışamaz.

cevap

8

Tam olarak aynı şekilde çalışır. TabularInline ve StackedInline sınıfları ayrıca bir formfield_for_dbfield yöntemine sahiptir ve bunu alt sınıfınızda aynı şekilde geçersiz kılarsınız.

+0

Doh çalışıyor! InlineFormsetFactory ve benzeri şeyleri aşırı derecede karmaşıklaştırıyor ve etrafta dolaşıyordum! –

1

Düzeltme: Nevermind. Bu sadece benim tarafımdaki aptal bir hataydı.

muhtemelen inline bu çalışma küçük bir parçasını verebilir misiniz? Aşağıdaki kodu denediğimde biraz garip keyerror alıyorum.

Django 1.1 yana
class PictureInline(admin.StackedInline): 
    model = Picture_Gallery 
    extra = 3 
    def formfield_for_dbfield(self, db_field, **kwargs): 
     if db_field.name == 'name': 
      kwargs['widget'] = MyWidget() 
     return super(PictureInline,self).formfield_for_dbfield(db_field,**kwargs) 
6

, formfield_overrides da

formfield_overrides = { 
    models.ImageField: {'widget': AdminImageWidget}, 
} 
+0

Sorun, varsayılan = satır içi bir şey üzerinde ayarlandığında, yeni bir alan eklemek istediğiniz görünüyor. –

İlgili konular