В настоящее время я работаю над своим первым проектом Django и преодолел препятствия на пути добавления ImageField к существующей модели.
В настоящее время у меня есть модель для публикации контента пользователем и модель для django-профилей. Для первого я добавил ImageField, чтобы использованный мог отправить фотографию, чтобы сопровождать текстовое содержимое. Что касается последнего, я хочу разрешить пользователям загружать фотографию профиля (на данный момент не беспокоюсь об изменении размера аватара).
Все работало хорошо, пока я не добавил ImageFields в обе модели. Затем я синхронизировал базу данных с Югом. В результате, когда я пытаюсь открыть когда-то работающие шаблоны для профилей:
"нет такого столбца: 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 при первоначальной сборке моделей.)
Большое спасибо.