gpt4 book ai didi

python - 将 ImageField 添加到 Django 模型会导致错误

转载 作者:行者123 更新时间:2023-11-30 23:45:22 24 4
gpt4 key购买 nike

我目前正在开发我的第一个 Django 项目,并且在向现有模型添加 ImageField 方面遇到了障碍。

我目前有一个用于用户发布内容的模型和一个用于 django-profiles 的模型。对于前者,我添加了一个 ImageField,以便用户可以提交一张照片来伴随文本内容。对于后者,我想允许用户上传个人资料照片(目前不担心头像大小调整)。

在我将 ImageFields 添加到两个模型之前,一切都运行良好。然后我将数据库与 South 同步。当我尝试提取曾经有效的配置文件模板时,结果是:

“没有这样的列:report_userprofile.profile_pic”

尝试查看提交的文本内容时会出现类似的错误。

我将两个字段都设置为“blank=True”,因此似乎没有图像文件不会导致错误。我显然错了。

我最初并没有将这些字段放入模型中,事后看来这是一个很大的错误。我还刚刚设置了 MEDIA_ROOT 和 MEDIA_URL,如下所示:

MEDIA_ROOT = 'os.path.join(BASE_DIR, "media")'

MEDIA_URL = 'http://localhost:8000/media'

我现在使用的模型是:

class Story(models.Model):
title = models.CharField(max_length=100)
topic = models.CharField(max_length=50)
copy = models.TextField()
author = models.ForeignKey(User)
zip_code = models.CharField(max_length=10)
latitude = models.FloatField(blank=False, null=False)
longitude = models.FloatField(blank=False, null=False)
date = models.DateTimeField(auto_now=True, auto_now_add=True)
pic = models.ImageField(upload_to='pictures', blank=True)
def __unicode__(self):
return " %s" % (self.title)

class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
first_name = models.CharField(max_length=25)
last_name = models.CharField(max_length=35)
email = models.EmailField()
birth_date = models.DateField(blank=True, null=True)
city = models.CharField(max_length=25)
state = models.CharField(max_length=20)
zip_code = models.CharField(max_length=10)
profile_pic = models.ImageField(upload_to='pictures', blank=True)

URL 文件设置如下:

    url(r'^admin/', include(admin.site.urls)),

(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT},

这里的核心问题是我不知道错误可能是什么(甚至以前的模板?)。或者更好的是,错误,因为我确信我犯了几个错误。现在这有点麻烦了,还有随之而来的痛苦。

仅供引用,我已经安装了 PIL。

任何关于我需要采取什么措施来纠正这种情况的见解,即使是很小的见解,都将受到赞赏。我搜索过类似的问题,但没有出现这个具体问题。 ( future 的第一课是在最初组装模型时明显地设置图像文件。)

非常感谢。

最佳答案

如果您添加数据库中不存在的列(syncdb 不会更新数据库列),这与您所期望的完全一样。

如果这是关于 django South 的问题,您应该将其添加到标签中,并添加更多有关您在 South 所做的失败操作的背景信息。

这对于南来说应该是一个简单的操作:

  1. 注释掉 ImageField
  2. 运行python manage Convert_to_south myapp(或manage.py schemamigration myapp --initial,然后运行python manage migrate myapp --fake)
  3. 取消注释 ImageField;
  4. 运行python Manage schemamigration myapp --auto
  5. 运行python管理迁移myapp

如果你只是想让它在没有 South 的情况下工作,你还有另外 2 个选择..

手动将列添加到数据库或重置数据库表manage.py reset myapp - 删除所有数据。

如果运行python manage.py sqlall myapp命令,手动修改数据库非常容易——它将列出用于构建表的SQL,因此您可以复制并粘贴缺少的字段如果将关键部分转换为 alter table 语句,则将其写入 python manage.py dbshel​​l session (在您的情况下为 sqlite3)。

关于python - 将 ImageField 添加到 Django 模型会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9542637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com