我目前正在处理我的第一个 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)
URLs 文件设置如下:
url(r'^admin/', include(admin.site.urls)),
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT},
这里的核心问题是我不知道错误可能是什么(甚至以前的模板?)。或者更好的是,错误,因为我确信我已经犯了几个。现在有点像汤了,随之而来的痛苦。
仅供参考,我已经安装了 PIL。
对我需要做些什么来补救这种情况的任何洞察力,即使是很小的洞察力,都将不胜感激。我已经搜索过类似的问题,但没有出现这个具体问题。(未来的第一课显然是在最初组装模型时设置 ImageFiles。)
非常感谢。