【问题标题】:Django admin site does not pick current image URLDjango 管理站点不选择当前图像 URL
【发布时间】:2020-01-19 15:37:26
【问题描述】:

我正在尝试在 Django 管理站点中编辑我的一个对象的字段,我的模型中也有一个 Cloudinary 图像字段。问题是,每当我尝试对我的对象的 CharFields 之一进行编辑时,我都会收到错误消息:

value too long for type character varying(100)

我后来发现,每次我完成编辑并尝试保存时,它都会寻找一个新图像来替换我的imagefile 的当前图像,即使我没有触摸我的imagefile,因此它返回一个空的图像 URL 字符串,如下所示:

但当前图片 URL 工作正常,点击时显示如下:

我只是想知道我是否做错了什么,为什么每次点击保存时它都会寻找新的图片 URL?

这是我的models.py 文件:

from django.db import models
from cloudinary.models import CloudinaryField

class profiles(models.Model):
    firstname = models.CharField(max_length=120, default = 'null') #max_length=120
    lastname = models.CharField(max_length=120, default = 'null') 
    gender = models.CharField(max_length=120, default = 'null') 
    dob = models.CharField(max_length=120, default = 'null') 
    callNumber = models.CharField(max_length=120, default = 'null') 
    whatsappNumber = models.CharField(max_length=120, default = 'null') 
    ministry = models.CharField(max_length=120, default = 'null') 
    centre = models.CharField(max_length=120, default = 'null') 
    campus = models.CharField(max_length=120, default = 'null') 
    hostel_address = models.CharField(max_length=120, default = 'null') 
    city = models.CharField(max_length=120, default = 'null') 
    qualification = models.CharField(max_length=120, default = 'null') 
    profession = models.CharField(max_length=120, default = 'null') 
    maritalStatus = models.CharField(max_length=120, default = 'null') 
    bacenta = models.CharField(max_length=120, default = 'null') 
    layschool = models.CharField(max_length=120, default = 'null') 
    imagefile = CloudinaryField('image', max_length=512, null=False,  default = 
 'https://res.cloudinary.com/firslovetema/image/upload/v1566807474/h1psyutzptxlnhuk8uyr.png')



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

这是我之前的问题的后续问题,可以在这里找到:

value too long for type character varying(100)

【问题讨论】:

  • 您确定您已生成并应用迁移来创建imagefile 字段吗? Cloudinary 库 hard-coded max_length to 255,因此 (a) 您的 max_length=512 不执行任何操作,并且 (b) 您不应该在该字段上看到有关 VARCHAR(100) 的错误。请记住,您只需要在本地 makemigrations,但在提交迁移文件后,您必须在 Heroku 上 migrate
  • @Chris 好的,我如何在 Heroku 上迁移?
  • 您可能至少已经这样做了一次,因为您的数据库似乎不是空的:heroku run python manage.py migrate,在推送包含迁移文件的任何提交之后。
  • 谢谢!它工作@Chris
  • 太棒了。我会添加一个正确的答案,以便您接受。

标签: python django heroku django-models cloudinary


【解决方案1】:

当您保存对象时,Django 会保存所有属性,而不仅仅是您更改的属性。

Cloudinary 库hard-codes max_length to 255,所以

  • 你的max_length=512 什么也没做,而且
  • 您不应该在该字段上看到关于 VARCHAR(100) 的错误。

您确定您的所有迁移都已应用到 Heroku 上吗?尝试运行

heroku run python manage.py migrate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 2017-11-13
    • 2014-09-27
    • 2011-11-28
    • 2021-06-07
    • 2021-12-19
    • 2011-09-23
    相关资源
    最近更新 更多