0
テキスト値を記述したファイルをアップロードして保存することはできません。私は理由を理解していない:フォームとモデルは明らかに関連分野を持っています。私の視点からテキストフィールドtekst
への参照を削除すると、ファイルを正しくアップロードして保存します。参考:モデルフィールドのサブディレクトリ構造の1つを使用しています。私のモデルにはdef get_upload_to
、Overig_Beeld.objects.create
はupload.save()
ではなく、私の見解ではあります。テキストの説明付きのファイルをアップロード
モデル:
def get_upload_to(instance, filename):
return 'bulkafbeeldingen/%s/%s' % (instance.bulknummer, filename)
class Overig_Beeld(models.Model):
file = models.FileField(upload_to=get_upload_to)
bestandnaam = models.CharField(max_length=256, null=True)
upload_date = models.DateTimeField(auto_now_add=True)
bulknummer = models.ForeignKey(Bulk, null=True)
tekst = models.CharField(max_length=512)
フォーム:
class Overig_BeeldForm(forms.ModelForm):
file = forms.FileField()
tekst = forms.CharField(required=False)
class Meta:
model = Overig_Beeld
fields = ('file', 'tekst')
テンプレート:
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
<label for="file">Bestand:</label>
<input type="file" name="file"/>
<input type="text" name="tekst"/>
<input type="submit" value="Upload" />
</form>
ビュー:
if request.method=="POST":
upload = Overig_BeeldForm(request.POST, request.FILES)
if upload.is_valid():
f = request.FILES['file']
Overig_Beeld.objects.create(file=f, bestandnaam=f.name, bulknummer=bulk, tekst=upload.tekst)
return redirect(reverse('bulk', args=(bulk.slug,)))
エラー:
'Overig_BeeldForm' object has no attribute 'tekst'
おかげアンドレイは、私がcleaned_dataに慣れていないと私はあなたの提案は現在、私にエラーがスローされますよう、それを検討する必要があります。 '例外値を:U"キー「cleaned_data '' Overig_BeeldForm 'に見つかりません " – marckr
@marckr私の悪い' cleaned_data'はキーではなく属性です。更新された回答 –
ありがとうございました!完璧に動作します! – marckr