Quelqu'un peut-il vous éclairer exactement lorsque un fichier téléchargé est réellement écrit à l'emplacement renvoyé par "upload_to" dans le champ Filefield, en particulier en ce qui concerne l'ordre du champ, le modèle et la validation et le nettoyage de formulaires? P >
À l'heure actuelle, j'ai une méthode "propre" sur mon modèle qui suppose que le fichier téléchargé est en place, il peut donc faire une certaine validation dessus. On dirait que le fichier n'est pas encore enregistré et peut seulement être détenu dans un emplacement temporaire ou en mémoire. Si tel est le cas, comment «l'ouvrir» ou trouver un chemin d'accès si je dois exécuter un processus / programme externe pour valider le fichier? P>
merci, p>
ian p>
3 Réponses :
Le nettoyage de formulaire n'a rien à voir avec enregistrer réellement le fichier ou en enregistrant d'autres données à ce sujet. Le fichier n'est pas sauvegardé avant d'exécuter la méthode Le formulaire limité contiendra un objet Open Enregistrer () code> de l'instance de modèle (notez que si vous utilisez
modelName.ObjectS.create () code> Ce
Enregistrer () code> La méthode est appelée pour vous automatiquement).
Fichier CODE>, vous devez donc pouvoir effectuer une validation sur cet objet directement. Par exemple: p>
Toute façon de le faire dans la validation du modèle au lieu de la validation de la forme?
Que devez-vous faire dessus? Si votre validation fonctionnera sans fichier temporaire, vous pouvez accéder aux données en appelant lisez () code> sur ce que votre champ de fichier retourne.
def clean_field(self):
_file = self.cleaned_data.get('filefield')
contents = _file.read()
J'aimerais que cette validation passe dans la méthode modèle.clean () b> plutôt que dans la validation du formulaire, mais cela semble que ce n'est pas possible, est-ce correct? La validation de fichier téléchargée ne peut se produire qu'au niveau de formulaire, à partir de ce qu'il semble que vous dites.
Attends, ne me souviens pas, je me souviens de lire un point de vue sur la façon de le faire .. Laissez-moi aller creuser. Désolé ne le trouve pas. Si le modèle est déjà enregistré, vous pouvez simplement accéder à self.field.file.read () code>
ou écrivez-le comme champ de formulaire personnalisé. C'est l'idée de base sur la vérification d'un fichier MP3 à l'aide de la bibliothèque 'Mutagen'.
Notes: P>
Le code: p>