我目前正在處理我的第一個Django項目,並且在將ImageField添加到現有模型方面遇到了障礙。將ImageField添加到Django模型導致錯誤
我目前有一個用戶發佈內容的模型,一個用於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。
任何洞察力,甚至小洞察力,到我需要做的事情來彌補這種情況將不勝感激。我已經搜索過類似的問題,但沒有一個具體的問題出現。 (對於未來的第一課是在初始組裝模型時明顯設置ImageFiles。)
非常感謝。
謝謝。所以這會重置整個「故事」類,讓它變空(沒關係)。我使用sqlite3,並且我聽說使用South來更改數據庫模型時可能會很麻煩。那裏有其他明顯的錯誤嗎?我總覺得有更多的事情搞砸了(比如我發起這些改變的順序)。 – 2012-03-03 02:35:53
很難說出潛藏的其他危險。我也沒有足夠的經驗與南能夠猜測你做錯了什麼。很清楚,它沒有正確管理遷移。 – 2012-03-03 02:43:13