以下は、私のプロジェクトのdjangoコードを単純化したものです。ユーザーはファイルをアップロードしてタイトルを付けることができます。この機能は完全に機能します。ただし、後でユーザーがフォームを再編集すると、ファイルとタイトルが再表示されますが、ユーザーがファイルを提出すると空になります。現在ファイルを再アップロードせずにファイルフィールドで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')
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))
似たような問題がありますが、あなたがまだそれを試してみましたか? –
私はDjangoがこれを解決する機能を追加すべきだと思います。 –