10
votes

Django: Personnalisation de la valeur Filefield lors de la modification d'un modèle

J'ai un modèle, avec Filefield code>. Lorsque je modifierai ce modèle dans une vue, je veux modifier la valeur "actuelle" de Filefield code> qui est affichée dans le formulaire de vue. Laissez-moi vous expliquer.

modèles.py: strong> p> xxx pré>

formulaires.py: strong> p>

Welcome sound: Currently: welcome_files/2011/04/27/15_35_58_ojCompany.wav.mp3 
Change : <Choose File button>


0 commentaires

4 Réponses :


1
votes

Un moyen de le faire, serait d'écrire un widget de formulaire personnalisé et de remplacer la méthode de rendu.


0 commentaires

12
votes

Vous devez remplacer le fichier ClearAdableInput actuellement utilisé, pour modifier la manière dont il est affiché.

Voici le code du nouveau shortNameFileInput qui hérite de la valeur par défaut EffectableFileInput avec juste une modification de la 19ème ligne pour afficher uniquement le nom du fichier: xxx

Pour l'utiliser dans votre formulaire, vous devrez définir manuellement le widget que vous voulez à utiliser: xxx

qui devrait faire le tour.


1 commentaires

Pourquoi ne puis-je pas dériver du fichierInput au lieu de ClearableFileInput?



9
votes

Si vous voulez un moyen plus facile et évitez de réécrire la logique de rendu du widget, vous pouvez faire un petit piratage.

class DemoVar_addform(ModelForm):

    class Meta:
        model = DemoVar_model
        widgets = {
            'Welcome_sound': ClearableFileInput,
        }   


1 commentaires

C'est une approche beaucoup plus propre que la réponse acceptée et n'entraîne aucune duplication de code inutile.



3
votes

DJANGO 1.10.x Version antérieure

Le moyen le plus simple consiste à remplacer le template_substitut_values ​​ dans défaut ClearableFileInput DJANGO Widget qui sera utilisé plus tard pour rendant la forme. C'est une approche beaucoup plus propre qui n'entraîne aucune duplication de code inutile. xxx

puis utilisez le widget dans formulaires.py comme suit: xxx

Django 1.11.x Versions ou ultérieures

Vérifiez imagefield / Filefield Django Formulaire actuellement incapable couper le chemin du nom de fichier .


1 commentaires

J'ai essayé cela, mais rien n'arrive à "actuellement" pour couper le fichier Filpath. J'ai posé ma question ici: Stackoverflow.com/Questtions/47887158/... @DHIATN