首页 > 解决方案 > 如何使用带有 ImageField 的 Django 上传图像?

问题描述

伙计们。我有一个问题,我想在我的网站上更改模型的缩略图(这里谈论 3D 打印,还有 Django 的),但 Django 并没有改变它。

模型.py

class Model3D(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=300)
    description = models.TextField(max_length=800, blank=True)
    thumbnail = models.ImageField(upload_to='models/thumbnails', null=True)

我尝试了两种不同的forms.py版本1

class ImageUploadForm(forms.Form):
    """Image upload form."""
    image = forms.ImageField()

版本 2(忽略以下名称,这只是一个快速测试)

class ModelCreateForm(forms.ModelForm):
    class Meta:
        model = Model3D
        fields = ['name', 'thumbnail']
        help_texts = {
            'thumbnail': ("Gebe hier den Namen des Modelles ein.")
        }

视图.py

def save_settings(request, pk):
    model = get_object_or_404(Model3D, pk=pk)
    if request.method == 'POST':
        # print("request.method == 'POST'" + str(dir(saveModel)))
        model.name = request.POST.get('name', model.name)
        model.description = request.POST.get('description', model.description)
        form = ImageUploadForm(request.POST, request.FILES)
        if form.is_valid():

            model.thumbnail = form.cleaned_data['image']
            model.save()
            return HttpResponse('image upload success')
        model.save()
        return redirect('settings_model', pk=model.pk)

    return redirect('settings_model', pk=model.pk)

我的模板中有 enctype="multipart/form-data。请帮忙!

标签: pythondjangofileuploadimagefield

解决方案


推荐阅读