Di seguito è riportata una versione semplificata del codice django nel mio progetto; consente agli utenti di caricare un file e assegnargli un titolo. Questa funzione funziona perfettamente. Tuttavia, quando l'utente esegue nuovamente la modifica del modulo in un secondo momento, il file e il titolo vengono nuovamente visualizzati, ma quando l'utente va a inviare il file archiviato vuoti. Il campo del file del modulo riaperto per la modifica si presenta così:Modifica di un modello Django con un file file senza caricare nuovamente il file
Attualmente: media_location/uploadedfile.mp3
Cambio: [Scegliere File] Nessun file scelto
E dopo presento esso, è:
- Questo Archiviato è richiesta
[Scegli file] Nessun file scelto
Come faccio a farlo in modo che l'utente non ha bisogno di ricaricare il file? Non mi importa se il campo è reso in sola lettura una volta che la presentazione è stata eseguita, o se rimane modificabile. Il progetto finito non è per un cliente e sarà disponibile solo per un piccolo gruppo di utenti fidati, ma mi piacerebbe comunque seguire le migliori pratiche se possibile. Grazie per qualsiasi aiuto.
Codice Django:
models.py
class Recording(models.Model):
rec_title=models.CharField(max_length=200,blank=True)
rec_file = models.FileField(upload_to='recordings')
forms.py
from django import forms
from songstorage.models import Recording
class RecordingForm(forms.ModelForm):
rec_file=forms.FileField(label='Upload File')
rec_title=forms.CharField(label='Recording Title',required=False)
class Meta:
model=Recording
views.py
def addrecordings(request,recordingfile):
#if there is a recordingfile in the url, the user is editing...
if recordingfile:
recording=Recording.objects.get(rec_title=recordingfile)
recording_form = RecordingForm(instance=recording)
#...Otherwise a new form is createing a new one
else:
recording_form = RecordingForm(request.POST, request.FILES)
#When the form is submitted, do the following:
if request.method == 'POST':
#check if its valid
if recording_form.is_valid():
recording_form.save()
#if sucessfully submitted, redirect
return redirect('/recordings/')
return render_to_response('addrecordings.html',{'recording_form':recording_form},context_instance=RequestContext(request))
Avere un problema simile, solo curioso di averlo già elaborato? –
Penso che Django dovrebbe aggiungere una funzione per risolvere questo problema. –