Poniżej znajduje się uproszczona wersja kodu django w moim projekcie; pozwala użytkownikom przesłać plik i nadać mu tytuł. Ta funkcja działa idealnie. Jednak, gdy użytkownik ponownie zmieni formularz, plik i tytuł są wyświetlane ponownie, ale gdy użytkownik pójdzie do przesłania plików opróżnione. Pole plik formularza ponownie otwarty do edycji wygląda tak:Edycja modelu Django za pomocą pola plików bez ponownego wczytywania pliku
Obecnie: media_location/uploadedfile.mp3
Zmiana: [Wybierz plik] Bez pliku Wybrana
I po przesłaniu go:
- Ten Zapisano jest wymagane
[Wybierz plik] Bez pliku Wybrana
Jak mogę to tak, że użytkownik nie musi ponownie przesłać plik? Nie ma dla mnie znaczenia, czy pole zostanie zrobione tylko raz, czy zostało ono poddane edycji, czy też pozostaje edytowalne. Gotowy projekt nie jest przeznaczony dla klienta i będzie dostępny tylko dla małej grupy zaufanych użytkowników, ale w miarę możliwości nadal będę postępować zgodnie ze sprawdzonymi metodami. Dzięki za pomoc.
kod 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))
Masz podobny problem, po prostu ciekawy, czy już to opracowałeś? –
Myślę, że Django powinien dodać funkcję, aby rozwiązać ten problem. –