何らかの理由で、Djangoで使用しようとしているフォームが有効ではないと考えられます。このコードは、動作すると主張しているサイトからほぼ直接取得されますが、まだ機能していません。 私のコードは以下の通りです。Django画像アップロードフォームが無効です
VIEWS
def display_update_image(request, pk):
if request.method == 'POST':
form = ImageForm(request.POST, request.FILES)
if form.is_valid():
display = Display.objects.get(pk = pk)
display.image = form.cleaned_data['image']
display.save()
return HttpResponseRedirect(reverse('displays'))
else :
form = ImageForm()
return render(request, 'catalog/update_display_image.html', {'form': form})
TEMPLATE(テンプレート名がupdate_display_image.htmlです)
<form method = "post" enctype = "multipart/form-data">{% csrf_token %}
<p>
<input id = "id" type = "file" class = "" name = "image">
</p>
<input type = "submit" value = "Submit" />
MODELS
class Display(models.Model):
title = models.CharField(max_length = 50,)
image = models.ImageField(upload_to = 'images')
id = models.UUIDField(primary_key = True, default = uuid.uuid4, unique = True)
def __str__(self):
return self.title
編集:申し訳ありませんフォームコードを投稿することを忘れ
class ImageForm(forms.Form):
image = forms.ImageField()
さらに編集:この
class ImageForm(forms.Form):
class Meta:
model = Display
fields = ('image',)
に私のフォームクラスを変更するには、フォームが、私は理由を理解していないものの、いくつかの理由で有効なものとして読むことができるようにします。それはもはやあなたはこの1つのようなDjangoのフォームを持っているforms.py
チェックで
display.image = form.cleaned_data['image']
あなたは 'ImageForm'のコードを投稿できますか? –
モデルのフォームクラスは 'class ImageForm(forms.ModelForm):' –