2009-12-02 12 views
4

En utilisant Flatpages avec l'admin par défaut, j'ai besoin de changer le champ de modèle d'une entrée de texte pour sélectionner ou radio avec des choix prédéfinis. Il est facile de le faire avec l'une de mes propres applications - utilisez simplement l'attribut choices du modèle.Modifier le champ dans Django Flatpages Admin

J'ai essayé quelques choses - j'ajouterai des détails au sujet de ces tentatives plus tard si nécessaire - mais est-ce que quelqu'un sait une bonne manière de faire ceci?

Répondre

14

Définir une classe ModelAdmin flatpages personnalisée qui hérite de la classe par défaut mais utilise un formulaire personnalisé. Sur ce formulaire, remplacez le champ, en utilisant le widget que vous voulez. Ensuite, annulez l'enregistrement de l'administrateur de flatpages et réenregistrez-le avec votre classe personnalisée.

from django.contrib.flatpages.admin import FlatPageAdmin, FlatpageForm 

class MyFlatpageForm(FlatpageForm): 
    template = forms.ChoiceField(choices=MY_CHOICES) 

class MyFlatPageAdmin(FlatPageAdmin): 
    form = MyFlatpageForm 

admin.site.unregister(FlatPage) 
admin.site.register(FlatPage, MyFlatPageAdmin) 
+0

Merci! Cela a fonctionné, bien que je devais changer le modèle en template_name. – aptwebapps

+2

Je ne peux pas commenter alors j'écris pour répondre à Daniel Roseman Où mettre cela? Devrais-je faire une nouvelle application pour ça? – robos85

+3

Ne pas oublier 'de django.contrib.flatpages.models importer FlatPage' – Tom