2010-07-15 4 views
0

Disons que j'ai un modèle avec un champ basé sur la classe ImageField.Django: Moyen correct d'étendre un certain champ dans le formulaire de changement d'admin avec HTML?

class Foo(models.Model): 
    imagefile = models.ImageField('File', upload_to='foo/%Y/%m%/%d/') 

Django ajoute - après le premier téléchargement - une balise d'entrée de fichier de type de me laisser changer et un lien vers l'image pour la voir. Je veux ce code original (HTML) d'origine tel quel (et en aucun cas le créer moi-même manuellement) mais aussi ajouter un autre code HTML/JS, par exemple pour inclure un aperçu des vignettes ou ajouter du AJAX. Je peux également illustrer quelques autres cas d'utilisation pour d'autres domaines.

Quelle est la manière correcte (disons: facile/discrète) d'implémenter quelque chose comme ça?

Répondre

2

Vous devez écrire un widget personnalisé. Regardez django.forms.widgets pour le code du widget existant FileInput, que vous pouvez sous-classer et remplacer la méthode render si nécessaire. Vous aurez juste besoin d'assigner ce widget pour votre champ de fichier dans votre formulaire d'administration.

+0

Super, bon que je connais aussi :) Merci! – cpf

+0

Salut Daniel, pouvez-vous donner un exemple simple de comment faire cela? Je ne vais pas le faire fonctionner. J'ai essayé de pointer ma classe FooAdmin via "form =" vers une classe spéciale forms.ModelForm avec une classe Meta interne se référant au modèle principal (comme expliqué quelque part dans la documentation). Mais je suis coincé avec le reste. – initall

Questions connexes