图像未保存到媒体或创建媒体文件夹(Python、Django)

图像未保存到媒体或创建媒体文件夹(Python、Django),python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,在过去的几天里,我一直在努力解决这个问题,我做的一切都是对的,我不知道我到底错过了什么 当我尝试从管理页面上载图像时,它会成功地上载,并创建媒体文件夹(如果尚未存在) 但当我尝试从url获取图像时,图像保存在模型的url字段中,但从未创建到模型的图像字段,即image=image=models.ImageField 下面是我的代码 模型 class Image(models.Model): user = models.ForeignKey( settings.AUTH_U

在过去的几天里,我一直在努力解决这个问题,我做的一切都是对的,我不知道我到底错过了什么

当我尝试从管理页面上载图像时,它会成功地上载,并创建媒体文件夹(如果尚未存在)

但当我尝试从url获取图像时,图像保存在模型的url字段中,但从未创建到模型的图像字段,即image=image=models.ImageField

下面是我的代码

模型

class Image(models.Model):
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL, related_name="user_images", on_delete=models.CASCADE
    )
    users_like = models.ManyToManyField(
        settings.AUTH_USER_MODEL, related_name="images_liked", blank=True
    )
    title = models.CharField(max_length=200)
    slug = models.SlugField(max_length=200, blank=True)
    url = models.URLField()
    image = models.ImageField(upload_to="images/%Y/%m/%d/")
    description = models.TextField(blank=True)
    created = models.DateField(
        auto_now_add=True, db_index=True
    )
表单保存方法

def save(self, force_insert=False, force_update=False, commit=True):
            image = super().save(commit=False)
            image_url = self.cleaned_data["url"]
            name = slugify(image.title)
            extension = image_url.rsplit(".", 1)[1].lower()
            image_name = f"{name}.{extension}"
            # download image from the given URL
            response = request.urlopen(image_url)
            image.image.save(image_name, ContentFile(response.read()), save=False)
            if commit:
                image.save()
            return image

在your views.py中,尝试从表单提取数据时,而不是

form_data=MyForm(request.POST)
换成

form_data = Myform(request.POST,request.FILES)

另外,尝试通过跳过初始验证函数来验证表单输入,并确保,你收到一张格式正确的图片,让你的生活更轻松

你能添加你的
设置.py
文件
MEDIA\u ROOT
MEDIA\u URL
config吗?我认为MEDIA ROOT没问题,因为当我通过管理页面上传时,一切都正常。。。但是我想将下载的图像保存到模型字段(图像),谢谢,是的,我已经在验证表单输入,我还使用了获取所有数据的
form\u data=MyForm(data=request.POST)
form_data = Myform(request.POST,request.FILES)