Bearbeiten eines Django-Modells mit einem Dateifeld, ohne die Datei erneut hochladen zu müssen

8

Im Folgenden finden Sie eine vereinfachte Version des Django-Codes in meinem Projekt. Es ermöglicht Benutzern, eine Datei hochzuladen und ihr einen Titel zu geben. Diese Funktion funktioniert einwandfrei. Wenn der Benutzer das Formular später erneut bearbeitet, werden die Datei und der Titel jedoch erneut angezeigt, wenn der Benutzer die leere Datei übermittelt. Das Dateifeld des Formulars, das zur Bearbeitung geöffnet wurde, sieht folgendermaßen aus:

  

Derzeit: media_location / uploadedfile.mp3

     

Ändern: [Datei auswählen] Keine Datei ausgewählt

Und nachdem ich es eingereicht habe, ist es:

  
  • Diese Ablage ist erforderlich
  •   

[Datei auswählen] Keine Datei ausgewählt

Wie bekomme ich es, damit der Benutzer die Datei nicht erneut laden muss? Es spielt für mich keine Rolle, ob das Feld nach der Übergabe gelesen wird oder ob es editierbar bleibt. Das fertige Projekt ist nicht für einen Client gedacht und wird nur einer kleinen Gruppe vertrauenswürdiger Benutzer zur Verfügung stehen. Ich möchte jedoch nach Möglichkeit den Best Practices folgen. Danke für jede Hilfe.

Django-Code:

models.py

%Vor%

forms.py

%Vor%

ansichten.py

%Vor%     
sean 21.07.2013, 16:51
quelle

2 Antworten

0

Ich hatte das gleiche Problem und konnte nicht herausfinden, wie noch in der Lage ist, etwas Nützliches zu suchen. Meine derzeitige Lösung besteht darin, in Ihrem Szenario ein anderes Formular zu verwenden:

%Vor%

Der einzige Unterschied ist, dass ich die updateView-Klasse-basierte Ansicht verwende, also müssen Sie Ihre Ansichtsfunktion ändern, um% code% für die Aktualisierung zu verwenden.

    
James Lin 01.06.2015 00:34
quelle
0

Ich hatte das gleiche Problem.

Sie können die Standardbereinigungsfunktion eines Modells überschreiben. Dies validiert alle Formulare, der Benutzer kann die Bilddatei beim Bearbeiten ändern, und die Datei ist garantiert nicht leer.

%Vor%     
Liu 13.08.2016 22:05
quelle