以下は、私のプロジェクトの django コードの簡略版です。ユーザーはファイルをアップロードしてタイトルを付けることができます。この機能は完全に機能します。ただし、ユーザーが後でフォームを再編集すると、ファイルとタイトルが再表示されますが、ユーザーがファイルを送信すると、ファイルは空になります。編集のために再度開いたフォームのファイル フィールドは、次のようになります。
現在: media_location/uploadedfile.mp3
変更: [ファイルを選択] ファイルが選択されていません
そして、私がそれを提出した後、それは次のとおりです。
- このフィールドは必須です
[ファイルを選択] ファイルが選択されていません
ユーザーがファイルを再アップロードする必要がないようにするにはどうすればよいですか? 送信が完了するとフィールドが読み取り専用になるかどうか、または編集可能のままかどうかは問題ではありません。完成したプロジェクトはクライアント向けではなく、信頼できる少数のユーザー グループのみが利用できますが、可能であればベスト プラクティスに従いたいと考えています。助けてくれてありがとう。
ジャンゴコード:
models.py
class Recording(models.Model):
rec_title=models.CharField(max_length=200,blank=True)
rec_file = models.FileField(upload_to='recordings')
フォーム.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
ビュー.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))