ImageField不适用于Django 2.0.4版本

时间:2018-07-03 05:03:15

标签: django django-models

我正在使用Django 2.0.4版,但是我遇到models.ImageField的问题。

每当我尝试用新的图像更新现有图像时,都不会发生任何事情。另外,当我尝试清除图像时,什么也没有发生。 我已经像Pillow一样安装了所有依赖项。

我像往常一样声明了ImageField-

class Community(models.Model):
    image = models.ImageField(
        upload_to=upload_location,
        null=True,
        blank=True,
        width_field="width_field",
        height_field="height_field", help_text="A image representing the Community")
    height_field = models.IntegerField(null=True, blank=True)
    width_field = models.IntegerField(null=True, blank=True)

def __str__(self):
    return str(self.id)

我以前使用过ImageField,但从未遇到过这样的问题。 Django版本有问题吗?我应该考虑升级我的Django版本吗? 预先感谢

更新

我尝试过的事情- 我尝试了其他数据库。 尝试升级枕头版本

2 个答案:

答案 0 :(得分:0)

您可以通过以下方式在Django中上传或更新图像:

models.py文件

class ImageModel(models.Model):
    image = models.FileField(upload_to="profile pics/", null=True, blank=True)

image.html文件

 <form method="post" enctype="multipart/form-data">
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
 </form>

这就是我过去在项目中上传/更新图像的方式。

希望一切顺利。干杯!

答案 1 :(得分:0)

我弄清楚了问题所在。我确实将admin.py中的save方法实现为

def save_model(self, request, obj, form, change):
    if change:
        obj.updated_by = request.user
    else:
        obj.created_by = request.user
        obj.updated_by = request.user
        obj.save()

这是导致问题的原因。我通过这样调用超类的save_model来解决它-

def save_model(self, request, obj, form, change):
    super().save_model(request, obj, form, change)
    if change:
        obj.updated_by = request.user
    else:
        obj.created_by = request.user
        obj.updated_by = request.user
        obj.save()

我知道我应该已经调用过此函数,但是对我来说,每次必要时都调用它是一个很好的学习