2011-07-05 12 views
10

Chcę, aby administrator Django użył niestandardowego pola formularza do wprowadzania niektórych pól.Jak używać niestandardowych pól formularza dla pól modelu w administratorze Django?

Do tej pory stworzyłem niestandardowe pole modelu, które ma przypisane do niego pole formularza, które działa świetnie, ale wprowadza niepotrzebne pole modelu, które nie daje żadnych korzyści.

Domyślam się, że można to zrobić w jakiś sposób za pomocą niestandardowego formularza administratora (patrz http://docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin), ale nie mogłem wymyślić, jak to zrobić.

+0

Czego nie rozumiesz w tym połączonym przykładzie? Wydaje się zupełnie jasne: zdefiniuj swój formularz za pomocą niestandardowego pola i ustaw go jako formularz dla klasy administratorów. Jaki jest problem? –

Odpowiedz

8
class MyModelForm(forms.ModelForm): 
    my_field = MyCustomFormField() 

    class Meta: 
     model = MyModel 

class MyModelAdmin(admin.ModelAdmin): 
    form = MyModelForm 
+0

Dzięki! To działało jak urok. Nie wiedziałem, że możesz po prostu zastąpić pola formularza. – Semmel

+0

W rzeczywistości ta metoda ** nie działa ** - tylko na zwykłym 'Formularzu'. Jeśli chcemy nadpisać pola na 'ModelForm', należy to zrobić w klasie Meta. Zobacz https://docs.djangoproject.com/en/1.5/topics/forms/modelforms/#overriding-the-default-fields – jnns

+0

@jnns: Weird, część ModelForm jest prawie dosłownie zaczerpnięta z strony dokumentu Django, którą podłączyłeś . – che

Powiązane problemy