2010-09-11 10 views
5

Yönetici formunda yeni örnekler eklemek için yeşil artı işareti düğmesi tanımladığım zaman MultiSelect alanım (fotoğraflar) için kayboluyor Benim formumda. Yani, çizgiyi tanım ile kaldırarak (fotoğraflar = ...) artı işareti görünür. Ancak, özel bir Alan/Widget kullanmak için bunu anlamaya ihtiyacım var.Django admin - Özel yönetim biçiminde çoktan çoğa Alan için yeşil artı işaretini nasıl ekleyebilirim?

class GalleryForm(ModelForm): 

    photos = ModelMultipleChoiceField(queryset=Photo.objects.all(), label="Photos") 

    def __init__(self, *args, **kwargs): 
     super(GalleryForm, self).__init__(*args, **kwargs) 

Django kaynak koduna Gözetledin ettik ve ben bir RelatedFieldWidgetWrapper benim widget'ı sarmak zorunda gibi görünüyor, ama ben oldukça başım çevresinde kazanılmış değil. Herhangi bir yardım apprecietad!

cevap

10

Bu konuyla ilgili olarak lazerscience ve bu post yardımı ile sona erdi.

ModelAdmin:

class GalleryAdmin(admin.ModelAdmin): 

    form = GalleryForm 

    def __init__(self, model, admin_site): 
     self.form.admin_site = admin_site 
     super(GalleryAdmin, self).__init__(model, admin_site) 

Ve benim form:

class GalleryForm(ModelForm): 

    photos = ThumbnailChoiceField(queryset=Photo.objects.all(), label='Photos', widget=MyWidget(), required=False) 

    def __init__(self, *args, **kwargs): 
     super(GalleryForm, self).__init__(*args, **kwargs) 
     rel = ManyToOneRel(self.instance.photos.model, 'id') 
     self.fields['photos'].widget = RelatedFieldWidgetWrapper(self.fields['photos'].widget, rel, self.admin_site) 
+0

çalıştı özniteliği. Yanlış bir şey mi yapıyorum? – orokusaki

+0

@orokusaki Biraz geç (7 yıl sonra) ama şunu deneyebilirsiniz: "django.contrib.admin sitesinden site olarak admin_site" olarak görüldüğü gibi [burada] (https://github.com/django/django/blob/ 9dc83c356d363c090f3351c908cad6f823aeb7bf/test/admin_inlines/tests.py # L9) – raratiru

8

Evet, haklısınız, widget'ınızı django.contrib.admin.widgets.RelatedFieldWidgetWrapper ile sarmak zorundasınız. Bu durum, mevcut yönetici sitesini başlatma için bir parametre olarak beklediğinden dolayı biraz karmaşıklaşıyor! Belki de bu post yararlı bulacaksınız!

+0

sayesinde form 'admin_site sahip olmadığını belirten bir özel duruma neden Django 1.2 yılında :-) – Reimund

İlgili konular