J'ai un formulaire django où j'ai un FileField qui accepte le CV de l'utilisateur. Je vais convertir le résumé en un document html PLUS TARD. J'ai donc pensé à décaper le document original tout de suite et y stocker une colonne db, puis le décomposer et le convertir. Est-ce possible?Puis-je choisir un fichier de téléchargement à partir d'un formulaire django? Je veux dire un InMemoryUploadedFile
Répondre
il vaudra mieux de stocker le fichier puis de le rouvrir quand vous voulez le convertir. Le décapage et le stockage dans la base de données seront un énorme succès sur votre performance. Surtout si les fichiers sont volumineux.
Je pense que j'arrive lentement à la même conclusion –
Je ne pense pas que vous auriez besoin de recourir à la décapage de l'instance FileField. Tous les magasins FileField sont le chemin sur le lecteur où le fichier a été sauvegardé ... en ce sens, le fichier est déjà stocké pour une consommation ultérieure, et le décapage de l'instance de champ ne vous apportera pas vraiment beaucoup. En fait, puisque le champ ne stocke pas réellement les données, le décapage ne fera vraiment rien :-) Voir le django docs on FileField. Lorsque votre modèle avec le champ FileField est enregistré, il enregistre le chemin du fichier dans le CV. Tout processus qui vient plus tard peut charger le résumé à partir du lecteur, le convertir en HTML, puis supprimer le CV original, ou faire tout autre traitement de "nettoyage" que vous aimez.
Si vous avez besoin de stocker le contenu réel du fichier dans la base de données, vous souhaitez plutôt créer un champ Blob pour votre modèle ... les blobs sont spécifiques à la base de données. Cette question on SO a une implémentation bare-bones. Notez, cependant, que beaucoup de personnes pensent que stocker des données binaires dans la base de données est une idée peu performante, et vous devriez en fait faire attention à structurer votre application de cette façon. Ce google django-developers forum post a une bonne discussion et un exemple de code sur Django et blobs.
Je vois votre point concernant: FileField stockant juste le chemin du fichier local. Mais dans votre deuxième paragraphe, vous avez dit "... cela va sauver le chemin du fichier vers le CV". Que veux-tu dire par là? Et en ce qui concerne les blobs, bien sûr, je ne veux pas le faire de cette façon. Je veux juste stocker le contenu html de chaque CV uniquement dans la base de données. –
Pourquoi voudriez-vous le décaper en premier lieu? –
Je ne peux pas le stocker directement dans le système de fichiers. Si la conversion est réussie alors seulement je vais stocker les deux fichiers. Original et converti. C'est pourquoi j'ai besoin d'un endroit intermédiaire où je vais stocker le fichier exact. J'ai donc pensé à le décaper. –